洛谷-for-CP1422-小玉家的电费

31次阅读

共计 441 个字符,预计需要花费 2 分钟才能阅读完成。

题目链接

题目本身非常简单,直接 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;

}

正文完
 0