题目大意:有一只蜗牛从底部向顶部爬,白天爬,晚上休息,但是下一天白天怕的速度会减慢,也就是爬的高度会减少。
//H-总高 U-初始速度
//D-下滑距离 F-速度下降的概率 先计算出每次速度下降的大小为U*F
只需要判断蜗牛什么时候到顶端,或者“低于”底部即可。
需要另输入的变量为double型的,long long或者int都会溢出。
代码实现:
#include<iostream>
using namespace std;
int main()
{
double h,u,d,f;//H-总高 U-初始速度
//D-下滑距离 F-速度下降的概率 先计算出每次速度下降的大小为U*F
while(cin>>h,h)
{
cin>>u>>d>>f;
int flag=0;
int day=1;
double nowh=0;//现在的高度
double diff=u*(f/100.0);//下次讲减少的速度
while(nowh>=0&&nowh<=h)//while(1)也行
{
if(u>0)
nowh+=u;
if(nowh>h)
{
flag=1;
break;
}
nowh-=d;
if(nowh<0)
break;
u-=diff;
day++;
}
if(flag)
cout<<"success on day "<<day<<endl;
else
cout<<"failure on day "<<day<<endl;
}
return 0;
}