AtCoder Regular Contest 057 A - 2兆円
問題
2兆円を目指します。初日はA円です。翌日は当日から1+K*当日の所持金分増えます。
何日かかりますか?
制約
- 入力はすべて整数である
考えたこと
指数関数的に増えていくので操作をシミュレートしても間に合うと思います。指数関数的の使い方が正しいか自信はありません。
ただし、Kが0の時は1ずつしか増えないので場合分けする必要がありそうです。
コード
#define _GIBCXX_DEBUG #include <bits/stdc++.h> using namespace std; #define rep(i, n) for (int i = 0; i < (n); ++i) #define all(v) v.begin(), v.end() using namespace std; using ll = long long; int main(void) { ll A, K; cin >> A >> K; ll target = 2 * 1e12; if (K == 0) { cout << target - A << endl; return 0; } ll ans = 0; while (A < target) { A = A + 1 + A * K; ++ans; } cout << ans << endl; return 0; }
解説を読んで
とくにありません。