这一题我直接用的是表驱动,因为不想考虑那么多的情况。
#include <cstring>
#include <iostream>
#include <cmath>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <iomanip>
using namespace std;
const int level[] = {0, 150, 400};
const double cost[] = {0.4463, 0.4663, 0.5663};
const double full_cost[] = {0, 66.945, 116.575};
int main() {
int power;
cin >> power;
int lvl = -1;
for(int i = 0; i < 3; i++) {
if(power <= level[i]) {
break;
} else {
lvl++;
}
}
double result = 0;
for(int i = 0; i <= lvl; i++) {
result += full_cost[i];
}
result += (power - level[lvl]) * cost[lvl];
cout << fixed << setprecision(1) << result << endl;
return 0;
}