UVA573 The Snail 题解

题目:传送门

思路:

典中典的小学奥数蜗牛爬井题,按照题目进行模拟即可,需要注意的是:蜗牛每天可以向上爬的距离等于前一天所爬的距离减去 \(r\)\(r\) 等于第一天可以向上爬的距离乘以疲劳度除以 \(100\) )。(详见代码)

代码:

#include <bits/stdc++.h>
  using namespace std;
double t,r,h,p,q,o;//开始时定义为浮点类型,便于运算。 
int s;
int main()
{
	while (true)
	{
		scanf("%lf%lf%lf%lf",&h,&p,&q,&o);
		if (!h) break;//当井的高度为零时退出循环。 
		t=0;//记得初始化 
		s=0;
		r=p*o/100;//计算出蜗牛每天向上爬的距离比前一天少多少。 
		while (true)
		{
			s++;
			t+=p;
			if (t>h) break;//如果蜗牛爬出了井则退出循环。 
			t-=q;//若蜗牛没有爬出井则向下滑。 
			if (t<0) break;//如果蜗牛滑到了井底则退出循环。 
			p-=r;//第二天向上爬的距离 
			if (p<0) p=0;//如果第二天可以向上爬的距离为负,则重置为 0 ,否则第二天会向下滑更多的距离。 
		}
		if (t>h) printf("success on day %d\n",s);
		if (t<0) printf("failure on day %d\n",s);
	}
	return 0;
}
posted @ 2022-03-23 11:43  Jason142  阅读(16)  评论(0编辑  收藏  举报