坚持不懈的蜗牛(SNAIL)WA 0分

题目如下:

坚持不懈的蜗牛(SNAIL)

题目ID:1501 100分

时间限制: 1000ms

空间限制: 65536kB
现在有一只蜗牛,掉入一个6米深的井底,它想爬到井口上面去。蜗牛在第一天的白天能爬3米,但在每天夜晚由于睡觉,它会滑落1米。又由于疲劳因素,以后每个白天它所能爬的高度以第一天爬的高度10%递减,也就是说,下一天比前一天要少爬0.3米。那么蜗牛哪一天才能爬到井口上去呢?在下表中你会看到,蜗牛在第三天爬到井口。

天数 每天初始高度 每天所爬高度 白天到达高度 夜间滑落后高度

1 0 3 3 2

2 2 2.7 4.7 3.7

3 3.7 2.4 6.1 –

问题求解:

你现在要将这个问题一般化。给定不同的参数,最后的结果可能有两种:爬到井口或跌落到井底(注意爬到井口是指青蛙爬的高度大于井口高度,跌倒井底是指青蛙滑落至高度小于0)。你需要计算的是,最终结果如何,以及这个结果发生在哪一天。

输入格式:

输入文件中可包含多个事件,每一行中输入一次事件的4个参数。这四个数分别是:H、U、D、F,参数之间用空格隔开。其中H为井的深度,U是蜗牛在第一天的白天能爬的高度,D是蜗牛每天晚上要滑落的高度,F是疲劳因子(用百分数的形式表示,如30表示为30%)。蜗牛所爬的高度不能为负数,假若由于疲劳因素,我们算出蜗牛该天到达的高度为负,那么认为蜗牛当天根本没有爬。不管蜗牛白天爬多高,它每天晚上都会滑落D米。如果一行四个数都为0,则表示结束。

输出格式:

对于输入中的每个事件(每一行),程序输出一行与之对应。输出结果包括蜗牛是否成功到达要求高度,以及到达该高度的天数。

样例输入:

6 3 1 10
10 2 1 50
50 5 3 14
50 6 4 1
50 6 3 1
0 0 0 0

样例输出:

SUCCESS ON DAY 3
FAILURE ON DAY 4
FAILURE ON DAY 7
FAILURE ON DAY 68
SUCCESS ON DAY 20

时间限制:

1000

空间限制:

65536

代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	while(1){
		double a,b,c,d,e=0;
		int t=1;
		cin>>a>>b>>c>>d;
        int f=b;
		if(a==0&&b==0&&c==0&&d==0) break;
		e+=b;
		b-=f/100*c;
		while(e>0&&e<a){
			e+=b;
			b-=b/100*d;
			if(b<0) b=0;
			e-=c;
			t++;
		}
		if(e<=0) printf("FAILURE ON DAY %d\n",t);
		else printf("SUCCESS ON DAY %d\n",t);
	}
	return 0;
}

求助!

把这题放到问题讨论区

1 个赞

老哥,你这样例都不对怎么敢提交的?

1 个赞

OK

哪里出问题了啊?

我问你,b-现在的b的%d有什么用,你不是有f吗??

b-=f/100*d

其他的我还在找

我没看出其他的了,你自求多福吧

我来了
水题,简单的模拟
核心代码

    	double d1 = u * f * 0.01;
         //因为以后每个白天所能爬的高度以第一天爬的高度10%递减,所以乘0.01
    	int cnt = 0, sign;
    	double sum = 0;
    	while(1) {
    		cnt++;
    		if (u >= 0) sum += u;
    		if (sum > h){
    			sign = 1;
    			break;
			}
			sum -= d;
			if (sum < 0) {
				sign = 0;
				break;
			}
			u = u - d1;
		}

如果sign = 0,说明没到输FAILURE ON DAY ?;
否则输SUCCESS ON DAY DAY ?