描述:
很久以前有一只蚂蚁,某天在路上走着走着,突然看见了一只蜗牛,爬的很慢。心想自己虽然比它小,可是跑得比它快,于是蚂蚁想跟蜗牛进行一次马拉松比赛,想证明它的实力。蚂蚁跟蜗牛商量后决定在星期六下午进行马拉松比赛。
The day is coming….比赛跑道为一条直线,Unlucky!!跑道上有很多坑。注意哦,坑!蜗牛想知道它掉下坑底后,爬上来需要多少时间,你的任务是帮忙蜗牛算出它掉入每个坑后,从坑底爬上来的时间,蜗牛每爬半个小时,就得休息半个小时,休息的时候,蜗牛会往下掉一定的深度。坑的深度,往上爬的高度以及休息时往下掉的深度给定。
输入:
输入第一行包含一个整数N(0<=N<=1000),表示跑道上坑的数量。
接下来N行,代表N个坑的测试数据,每组测试数据占一行,包含三个整数H、i、j(用一个空格分开),代表坑的深度、往上爬的高度、休息时往下掉的深度。(0<=H、i、j<2^16)
输出:
对于每一个坑,输出蜗牛爬上岸所需要的时间(采用进一法,单位:小时)。不能爬上来则输出“Never see sun!”
输入样例:
2
10 10 0
10 0 0
输出样例:
1
Never see sun!
解题思路:先把看不到太阳的情况讨论下,主要分析j<i<H的情况。实际上蜗牛每次往上爬的高度为i-j,只要判断最后一次H-(i-j)是否大于i即可。不大于的话时间自加,否则输出。
代码:
#include<iostream>
using namespace std;
main()
{
intN;
intH[1000],i[1000],j[1000];
cin>>N;
for(inta=0;a<N;a++)
{
cin>>H[a]>>i[a]>>j[a];
}
for(intb=0;b<N;b++)
{
if(i[b]>=H[b])
cout<<1<<endl;
else
if(j[b]>=i[b])
cout<<"Never seesun!"<<endl;
else
{
intcount=1;
for(;H[b]-i[b]>0;)
{
H[b]=H[b]-i[b]+j[b];
count++;
}
cout<<count<<endl;
}
}
return0;
}
解题感想:感觉这题挺简单的……