题目
小玉在游泳
——————————————————————————————
题目描述
小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。已知小玉第一步能游 2 米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的 98%。现在小玉想知道,如果要游到距离 s 米的地方,她需要游多少步呢。请你编程解决这个问题。
输入格式
输入一个实数 s(单位:米),表示要游的目标距离。
输出格式
输出一个整数,表示小玉一共需要游多少步。
————————————————————————————
当然,在学习等比数列之后,这道题就可以直接输出答案了。本蒟蒻还一点都不会
所以我们用循环解决。
最简单的办法其实就是用一个变量m存储每步可以走的米数,用sum累加总米数。
代码如下↓
#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;signedmain(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);doubles;cin>>s;doublem=2,sum=0,cnt=0;while(1){if(sum>=s){cout<<cnt;return0;}sum+=m;cnt+=1;m*=0.98;}return0;}我们也可以把while循环换成for循环,这样就不用m了,直接用i模拟。
代码如下↓
#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;signedmain(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);doubles;cin>>s;doublesum=0,cnt=0;for(doublei=2;;i*=0.98){if(sum>=s){cout<<cnt;return0;}cnt+=1;sum+=i;}return0;}其实也可以用二分做
以上代码本人亲测AC
这其实是我第一次写题解嘛