邮票问题

【分析问题】
小象要付n元邮费,他有四种邮票:20元、10元、5元和1元。我们需要找出最少用多少张邮票就能付清。想一想,如果你有100元,你会先用大面值的钱,这样张数就少。同样,这里优先用20元邮票,因为一张20元顶20张1元呢!然后再用10元、5元,最后用1元。这样就能用最少的邮票付钱啦。

【建立模型(伪代码)】
让我们用简单的步骤来计划:

  1. 开始时,邮票张数设为0。
  2. 如果n大于或等于20元,就计算能用几张20元邮票,把张数加上去,然后从n中减去这些20元。
  3. 接着,如果n还大于或等于10元,就计算能用几张10元邮票,把张数加上去,然后从n中减去这些10元。
  4. 然后,如果n还大于或等于5元,就计算能用几张5元邮票,把张数加上去,然后从n中减去这些5元。
  5. 最后,剩下的n就用1元邮票来付,一张1元邮票付1元,所以张数加上n的值。
  6. 输出总张数。

【编写代码】

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n; // 输入n元
    int count = 0; // 记录邮票张数

    // 先处理20元邮票
    if (n >= 20) {
        count += n / 20; // 用多少张20元
        n %= 20; // 剩下的钱
    }

    // 再处理10元邮票
    if (n >= 10) {
        count += n / 10; // 用多少张10元
        n %= 10; // 剩下的钱
    }

    // 然后处理5元邮票
    if (n >= 5) {
        count += n / 5; // 用多少张5元
        n %= 5; // 剩下的钱
    }

    // 最后用1元邮票付剩下的钱
    count += n; // 1元邮票张数就是剩下的n

    cout << count << endl; // 输出总张数
    return 0;
}

【保存编译运行】