还是简单题做着舒服。。
#include <iostream>
#include <sstream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <set>
#include <cctype>
#include <algorithm>
#include <cmath>
#include <deque>
#include <map>
using namespace std;
///
#define INF 0xffffff7
#define MAXN 200
///
double H, U, D, F;//H是墙的高度, U是白天爬的高度, D是晚上下降的高度, F是疲劳因子
int main()
{
///
int i, j;
while (1)
{
cin >> H >> U >> D >> F;
if (H == 0)
break;
int days(0);
bool flag(0);
double climbH(0);
double reduce(U);
while (1)
{
days++;
climbH += U;
if (climbH > H)
{
flag = true;
break;
}
climbH -= D;
if (climbH < 0)
break;
U -= F / 100 * reduce;
if (U <= 0)
U = 0;
}
if (flag)
printf("success on day %d\n", days);
else
printf("failure on day %d\n", days);
}
///
return 0;
}