HDU 1049 Climbing Worm(水~)

Description
一只蠕虫掉到了深度为n米的井中,这只蠕虫开始往上爬,一秒可以爬u米,但这只虫每爬一秒就要休息一秒,而每休息一秒就会往下掉d米,问蠕虫需要多少秒才能爬出深井
Input
多组用例,每组用例占一行占一行包括三个整数n,u,d,以0 0 0结束输入
Output
对于每组用例,输出蠕虫爬出深井用时
Sample Input
10 2 1
20 3 1
0 0 0
Sample Output
17
19
Solution
小学数学题,如果你直接用n/(u-d)求那恭喜你可以去幼儿园报道了,显然最后一秒虫是在向上爬的,它不会爬出去之后还往下掉,所以先用(n-u)/(u-d)算出最后一次往上爬之前的用时,然后通过判断(n-u)/(u-d)是否为0判断是否需要再爬一次掉一次,最后加上最后一秒往上爬的时间即可,即ans=1+2*(((n-u)/(u-d))+((n-u)%(u-d)==0?0:1))
Code

#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
    int n,u,d;
    while(scanf("%d%d%d",&n,&u,&d)&&(n||u||d))
    {
        int ans=1;
        ans+=2*(((n-u)/(u-d))+((n-u)%(u-d)==0?0:1));
        printf("%d\n",ans);
    }
    return 0;
}

你可能感兴趣的:(HDU 1049 Climbing Worm(水~))