Official
B - Sum of Geometric Series Editorial
by
B - Sum of Geometric Series Editorial
by
cn449
実際に \(X\) の値を計算し、\(X \leq 10^9\) かどうか判定すればよいです。
ただし、\(X\) の値は C++ における long long
のような 64bit 整数の範囲では表現できないことに注意してください。
これを回避するためには、多倍長整数を用いるか、\(N^0, N^1, \ldots, N^M\) を順番に足す操作を \(10^9\) を超えた時点で打ち切るとよいです。
実装例 (Python)
N, M = map(int, input().split())
X = sum(N ** i for i in range(M + 1))
print(X if X <= 10 ** 9 else "inf")
実装例 (C++)
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ll n, m;
cin >> n >> m;
ll cur = 1, sum = 0;
for (int i = 0; i <= m; i++) {
sum += cur;
if (sum > 1'000'000'000) {
cout << "inf\n";
return 0;
}
cur *= n;
}
cout << sum << '\n';
}
posted:
last update: