1 条题解
-
2
解题思路
题目分析
给定一个金额(小于 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
- 上传者