【题目描述】一只蜗牛要爬上一个屋顶h米,但又不知道用多久爬上去,每天早上爬a米,晚上又滑下b米。于是它来找你来帮它编一个程序,算出它是否能爬上屋顶,若能爬上要用多久。
【输入格式】第一行三个整数h,a,b,均位于[1, 10000]。
【输出格式】如果能爬上屋顶,输出"YES",然后输出一个整数,表示天数;否则输出"NO"。
样例输入1:10 3 2 样例输出1:YES 8
样例输入2:10 3 4 样例输出2:NO
【C语言实现】
# include <stdio.h>
# include <math.h>
int main()
{int h, a, b;scanf("%d%d%d", &h, &a, &b); // 输入三个正整数if (a >= b) { // 分情况考虑,向上爬的米数不小于向下滑的米数int s = 0; // 变量s记录当前爬行的米数for (int k = 1; ; ++k) { // 变量k记录日期s += a; // 向上爬,将a累加到变量sif (s >= h) { // 判断是否已经到屋顶,到屋顶要输出,并退出循环printf("YES %d", k);break;}s -= b; // 向下滑,相应地对变量s减去b}} else if (a < b && a >= h) { // 这种情况不要忘记!!!printf("YES %d", 1); // 尽管向上爬的米数小于向下滑的米数,似乎不可能到达屋顶,但是可能在向下滑之前,也就是第1次向上爬的时候,已经到达屋顶了} else { // 其他情况,不可能到达屋顶printf("NO");}return 0;
}