top1编程
← 返回题目
题解

【入门】兑换硬币

1 条题解

  • 0
    @ 2026-7-30 0:42:43

    解题思路

    1. 一元钱等于100分。
    2. 设1分、2分、5分硬币的数量分别是a、b、c。
    3. a、b、c都至少是1。枚举a和b后,剩下的钱必须全部换成5分硬币。
    4. 如果剩下的钱能被5整除,就找到一种换法,答案加1。

    参考代码

    // 读取题目给出的数据。
    // 按照题意完成计算。
    // 输出最终答案。
    #include <iostream>
    using namespace std;
    
    int main() {
        int a, b, c, sum = 0;
    
        for (a = 1; a <= 98; a++) {
            for (b = 1; b <= 98; b++) {
                c = 100 - a - 2 * b;
                if (c >= 1 && c % 5 == 0) {
                    sum++;
                }
            }
        }
    
        cout << sum << endl;
        return 0;
    }
    

    复杂度

    最多枚举100乘100次,时间复杂度是O(10000),空间复杂度是O(1)。

    • 1