#UVa:573-The Snail

利用模擬算出天數。注意每次上升長度的衰減是減個定值,並非每次去乘上一個比例,並且上升長度小於零時要被侷限在0。

C++(0.015)

/*******************************************************/
/* UVa 573 The Snail                                   */
/* Author: LanyiKnight [at] knightzone.org             */
/* Version: 2015/01/05                                 */
/*******************************************************/
#include <iostream>
#include <cstdio>
using namespace std;

int main(){
  double H, U, D, F;
  while( scanf("%lf%lf%lf%lf", &H, &U, &D, &F) != EOF && H != 0 ){
    double height = 0;
    int day = 0;

    double fatigue = U * (F / 100);
    do{
      ++day;
      height += U;
      if( height > H ) break;

      U = max( 0.0, U - fatigue );
      height -= D;
    } while( height >= 0 );

    if( height > H ){
      printf("success");
    }
    else{
      printf("failure");
    }

    printf(" on day %d\n", day);
  }
  return 0;
}

發表迴響