题解:B4182 [中山市赛 2024] 海洋宝宝

· · 题解

循环结构,考察 while 循环的使用。

每隔 1 小时每颗海洋宝宝都会生出 k 颗新的海洋宝宝,也就是说,每过 1 小时,海洋宝宝的数量就会变成原来的 k+1 倍。
因此,只需要一个 while 循环,每次循环时判断是否凑够了 m 颗,凑够了,就输出答案,否则,就让数量就会变成原来的 k+1 倍,并增加时间。

注意:本题需要开 long long,否则会90分。

可以结合代码理解。

#include <bits/stdc++.h>
#define ll long long//不开 long long 见祖宗!
using namespace std;
int main() {
    ll n,k,m,ans=0;//n表示现在有几个海洋宝宝,ans表示过了几个小时
    cin>>n>>k>>m;
    while(n<m){//没到m颗,就一直循环
        n=n*(k+1);//过了一小时,数量变成了原来的k+1倍。
        ans++;//把时间计数器加1
    }
    cout<<ans;//输出最终的答案
    return 0;//The end.
}