2010年6月12日 星期六

Problem 573 The Snail,井底的蝸牛

給你井的高度 H、蝸牛白天上升高度 U、蝸牛晚上下降高度 D、蝸牛疲勞因子 F。
例如給你一隻蝸牛的數據 H = 6, U = 3, D = 1, F = 10。而這隻蝸牛會如以下表顯示,在第 3 天爬出井。
DayInitial HeightDistance ClimbedHeight After ClimbingHeight After Sliding
10'3'3'2'
22'2.7'4.7'3.7'
33.7'2.4'6.1'-

其中要注意的就是疲勞因子是以百分比去計算,還有如果因為疲勞而使得白天上升高度變成負值,就使白天上升高度為 0。

程式碼如下:
while (scanf("%f %f %f %f", &H, &U, &D, &F) == 4 && H != 0)
{
int days = 1;
float nowHigh = 0.0, sub = U * F / 100;
while (1)
{
nowHigh += U;
if (nowHigh > H) { printf("success on day %d\n", days); break;}
nowHigh -= D;
if (nowHigh < 0) { printf("failure on day %d\n", days); break;}
U -= sub;
if (U < 0) U = 0;
days ++;
}
}
By David.K

p573題目連結
回ACM題庫目錄
回首頁

沒有留言: