基础五 坚持不懈的蜗牛(SNAIL)求助

题目ID:1501
时间限制: 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
#include <iostream>
using namespace std;
int main(){
	double h,u,d,f;
	while(h!=0||u!=0||d!=0||f!=0){
		cin>>h>>u>>d>>f;
		double doun=h*f/100;
		int day=1;
		while(h>0){
			int w=h;
			h=h-u;
			if(h<=0){
				cout<<"SUCCESS ON DAY "<<day<<endl;
				break;
			}
			h=h+d;
			if(w<h){
				cout<<"FAILURE ON DAY "<<day<<endl;
				break;
			}
			day++;
			u=u-doun;
		}
	}
	return 0;
}
3 个赞

样例过不了

3 个赞

不能发代码

2 个赞

提问者可以发

2 个赞

解问者不能发,谢谢

2 个赞