1 条题解

  • 2
    @ 2025-9-13 11:50:30

    解题思路

    题目分析

    给定一个金额(小于 1000 的正整数)。

    要用 100、50、20、10、5、1 这些面额去支付,要求优先用大面额(贪心思想)。

    输出各个面额的张数,每行一个整数。

    这是一个 找零问题,典型解法是贪心:

    每次先用最大的面额尽可能多地支付,再用下一个小的面额,直到剩余为 0。

    解法步骤

    输入金额 n。

    计算 100 元张数:n / 100,剩余 n %= 100。

    计算 50 元张数:n / 50,剩余 n %= 50。

    计算 20 元张数:n / 20,剩余 n %= 20。

    计算 10 元张数:n / 10,剩余 n %= 10。

    计算 5 元张数:n / 5,剩余 n %= 5。

    计算 1 元张数:n / 1。

    依次输出各张数。

    #include <iostream>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
    
        cout << n / 100 << endl;      // 100元
        n %= 100;
    
        cout << n / 50 << endl;       // 50元
        n %= 50;
    
        cout << n / 20 << endl;       // 20元
        n %= 20;
    
        cout << n / 10 << endl;       // 10元
        n %= 10;
    
        cout << n / 5 << endl;        // 5元
        n %= 5;
    
        cout << n / 1 << endl;        // 1元
    
        return 0;
    }
    
    
    
    • 1

    信息

    ID
    258
    时间
    60ms
    内存
    10MiB
    难度
    10
    标签
    递交数
    19
    已通过
    7
    上传者