问题 K: 蜗牛1534
作者:互联网
题目描述
有一只蜗牛在6英尺深的井底,想要爬到顶部。在白天的时候,蜗牛可以往上爬3英尺,但在晚上睡觉的时候,它会往下滑1英尺。蜗牛的疲劳系数为10%,这意味着从第二个白天起,蜗牛都会比第一个白天少上爬10%* 3 = 0.3英尺。(疲劳的距离总是第一天攀爬距离的10%。)蜗牛在哪一天能够离开井,即蜗牛的上爬的总高度超过6英尺的一天是什么时候?(一天包括一段白天,然后是一段黑夜。)从下表可以看出,蜗牛在第三天离开了井。
Day | Initial Height | Distance Climbed | Height After Climbing | Height After Sliding |
1 | 0' | 3' | 3' | 2' |
2 | 2' | 2.7' | 4.7' | 3.7' |
3 | 3.7' | 2.4' | 6.1' | - |
你的工作是解决这个问题。根据问题所给的参数,蜗牛最终要么离开井,要么滑回井底。(换句话说,蜗牛的高度将超过井的高度或者变为负值。)你必须判断出蜗牛是否能够成功离开井,并计算出其离开井或滑回井底的的时间是第几天?
输入
输入包含一个或多个测试用例,每个测试用例都在一行上。 每行包含四个整数H,U,D和F,由单个空格分隔。 如果H = 0,则表示输入结束。所有四个数字将在1到100之间,包括1和100。 H是井的高度(英尺),U是蜗牛在白天可以往上爬的距离(英尺),D是蜗牛在夜间向下滑动的距离(英尺),F是以百分比表示的疲劳系数。 蜗牛永远不会爬上负距离。 如果疲劳因子使蜗牛的攀爬距离降至零以下,那么蜗牛当天就不会攀爬。 无论蜗牛爬到多远,它总是在晚上下滑D英尺。输出
对于每个测试用例,输出一行指示蜗牛是成功(离开井)还是失败(滑回到井底)以及在哪一天。完全按照示例中所示格式输出。
注意:蜗牛永远不会爬上负距离,则需要语句if(n>=0)sum+=u
样例输入 Copy
<span style="background-color:#ffffff"><span style="color:#333333"><span style="color:#333333"><span style="background-color:#f5f5f5">6 3 1 10
10 2 1 50
50 5 3 14
50 6 4 1
50 6 3 1
1 1 1 1
0 0 0 0
</span></span></span></span>
样例输出 Copy
#include<stdio.h>
int main()
{
double h,u,d,f;
while(scanf("%lf%lf%lf%lf",&h,&u,&d,&f)==4)
{
if(h==0&&u==0&&d==0&&f==0)break;
double d1=u*f*0.01;
int cnt=0,sign;
double sum=0;
do
{
cnt++;
if(u>=0)sum+=u;
if(sum>h)
{
sign=1;
break;
}
sum-=d;
if(sum<0)
{
sign=0;
break;
}
u=u-d1;
}while(1);
if(sign==1)printf("success on day %d\n",cnt);
else if(sign==0)printf("failure on day %d\n",cnt);
}
return 0;
}
<span style="background-color:#ffffff"><span style="color:#333333"><span style="color:#333333"><span style="background-color:#f5f5f5">success on day 3
failure on day 4
failure on day 7
failure on day 68
success on day 20
failure on day 2</span></span></span></span>
标签:10,sum,英尺,50,问题,1534,蜗牛,day 来源: https://blog.csdn.net/weixin_62109396/article/details/120991533