题意:蜗牛掉进高位H的井里,向外爬,初始高度为0,白天爬U*G,G为体力值(>=0),晚上掉下来D,初始体力值为100%,以后每爬一天减小P,其中,告诉H,U,D,P,求最后多少天爬出去或者再次掉下去。

题解:这题坑爹之处在于让人产生它很高端的误解,题目叙述说连续的爬行会减体力值,开始我还误以为休息一天又恢复了,然后可以安排什么时候休息使得爬出去时间最少= =!后来有以为蜗牛体力变成0后那天不爬,下一天又满状态复活了,于是WA就出现了。不过,题目貌似也没说体力将为0后蜗牛就放弃了啊~~~

View Code
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 const double eps=1e-8;
 6 int main()
 7 {
 8     int t;
 9     double now,h,u,d,p,g;
10     while(scanf("%lf%lf%lf%lf",&h,&u,&d,&p)!=EOF&&h>eps)
11     {
12         g=u;
13         p=u*p/100.0;
14         for(now=0.0,t=0;;t++)
15         {
16             if(now<-eps||now>h+eps)
17             {
18                 if(now<-eps)
19                     printf("failure on day %d\n",t);
20                 else
21                     printf("success on day %d\n",t);
22                 break;
23             }
24             if(g>-eps)
25             {
26                 now=now+g;
27                 g-=p;
28             }
29             if(now>h+eps)
30                 continue;
31             now-=d;
32         }
33     }
34     return 0;
35 }