题目链接
题目本身非常简单,直接 if-else 其实就能做,我的代码用了一个表驱动。
需要注意的是(总是会忘记的一个点,也导致这次没能一次 AC 的一个点):
这是一种分段计算的题目,每一个符合的段都应该分开计算然后最后加起来,而不是只要计算最大符合的一段!
贴一下自己的代码(刚开始学 C ++,代码可能写得比较 xxx):
#include <iostream>
#include <iomanip>
using namespace std;
int main() {int amount[3] = {400, 150, 0};
double price[3] = {0.5663, 0.4663, 0.4463};
int sum;
cin >> sum;
double res = 0.0;
for (int i = 0; i < 3; i++) {if (sum > amount[i]) {res += (sum - amount[i]) * price[i];
sum = amount[i];
}
}
cout << fixed << setprecision(1);
cout << res;
return 0;
}