
【分析问题】
小象要付n元邮费,他有四种邮票:20元、10元、5元和1元。我们需要找出最少用多少张邮票就能付清。想一想,如果你有100元,你会先用大面值的钱,这样张数就少。同样,这里优先用20元邮票,因为一张20元顶20张1元呢!然后再用10元、5元,最后用1元。这样就能用最少的邮票付钱啦。
【建立模型(伪代码)】
让我们用简单的步骤来计划:
- 开始时,邮票张数设为0。
- 如果n大于或等于20元,就计算能用几张20元邮票,把张数加上去,然后从n中减去这些20元。
- 接着,如果n还大于或等于10元,就计算能用几张10元邮票,把张数加上去,然后从n中减去这些10元。
- 然后,如果n还大于或等于5元,就计算能用几张5元邮票,把张数加上去,然后从n中减去这些5元。
- 最后,剩下的n就用1元邮票来付,一张1元邮票付1元,所以张数加上n的值。
- 输出总张数。
【编写代码】
#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;
}
【保存编译运行】