这道题理解不难~~但过程需要仔细思考..代码也简单...
首先看如果一直蜗牛每半小时上升为10下降为20但坑的高度只有10那蜗牛照样可以一次性出去...以这种思路看如果是
10 9 5 这种数据...蜗牛在一天过后的位置将是4然后第二天就能出去了....(注意绝不是10/(9-5)向上取整=3 而是2天就能出去)
如果蜗牛爬啊爬...某一天结束爬到了>=h-i 的位置那么下一天就能出去了....所以只要求出这个时间再加上1...
( h - i ) %( i - j ) == 0 那么蜗牛显然在 ( h-i) /( i-j ) 天能到达 ( h- i ) 的位置... 再多一天就能正好出去..
( h - i ) % ( i - j ) ! = 0 那么蜗牛在 ( h-i ) / (i - j ) 天能达到 ( h - i )下面的某个不低于 ( h - i - ( i-j ) ) 的位置.. 那么再用一天蜗牛能超过 h-i 的位置..再多一天蜗牛就能出去...
还有就是Never see sun!的情况... h > i && i-j<=0
Program:
#include<iostream> #include<stdio.h> using namespace std; int n,h,i,j; void make() { int a1,a2,k=i-j; if (h<=i) { printf("1\n"); return; } if (k<=0) { printf("Never see sun!\n"); return; } a1=(h-i)/k; if (h-(h-i)/k*k==i) a1++; else a1+=2; printf("%d\n",a1); return; } int main() { scanf("%d",&n); while (n--) { scanf("%d%d%d",&h,&i,&j); make(); } return 0; }