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;
}