Official

C - Slimes Editorial by nok0


この問題のように、「条件を満たすまで〇〇し続ける」といった処理を行うには while 文が有用です。

答えの上界は \(\log_2 10^9 < 30\) なので、シミュレーションを行うことで十分高速に答えを求められます。オーバーフローには十分気を付けてください。( \(A\)\(K\) を掛けた際に、 32bit 整数に収まらない場合があります。)

実装例 (C++):

#include <bits/stdc++.h>
using namespace std;

int main() {
    long long a, b, k;
    cin >> a >> b >> k;

    int res = 0;
    while (a < b) {
        a *= k;
        res++;
    }

    cout << res << endl;
}

posted:
last update: