2016年5月8日 星期日

UVA 573 The Snail (一般解)

/*
    題目連結

    很基本的一道題 不過還是有蠻多地方要注意的
    
    照著在code中出現的順序提一下
    1.爬升的速度是以固定的數值在下降 而不是等比例下降
    2.爬升的速度<0之後 白天會固定不動而不是下降
    3.每天爬升完之後 要"立刻"判斷是否"超過"H

    這裡還有一個小技巧 就是把所有的長度同乘100
    這樣子你的速度就可以一直用int來表示
*/ 
#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
    int H, U, D, F;

    while(1)
    {
        scanf("%d %d %d %d", &H, &U, &D, &F);
        if( H == 0 ) break;

        H *= 100, U *= 100, D *= 100;
        int dec = U/100*F;

        int pos = 0;

        for(int day = 1; ; day++)
        {
            if( U > 0 ) pos += U;
            if( pos > H )
            {
                printf("success on day %d\n", day);
                break;
            }

            pos -= D;
            if( pos < 0 )
            {
                printf("failure on day %d\n", day);
                break;
            }

            U -= dec;
        }
    }
}

沒有留言:

張貼留言