2021.11.4 记录一道递归2星题 这道题思路很简单,从小到大求出最小的速度,可以从1开始递归
#include<stack>
#include<cmath>
using namespace std;
typedef long long ll;
int H,C,p;
int recursion(int m,int t){
if(-p*t+C >= 0) return m;
m++;
t = H/m;
if(H%m != 0)
t++;
return recursion(m,t);
}
int main(){
cin >> H >>C >> p;
int m =recursion(1, H);
if(m>10) cout << -1;
else cout << m;
return 0;
}
这道题值得注意的是时间是向上取整的,根据样例2,你就可以算出13/7 余数为6 但是时间是2秒 有了代码9-11行的向上取整写法,其他就没什么注意了,最后记得判断是否m<=10即可。