Loading... 作为 A 公司的职员,最盼望的日子就是每月的**8**号了,因为这一天是发工资的日子,养家糊口就靠它了。 但是对于公司财务处的工作人员来说,这一天则是很忙碌的一天。财务处的小胡最近考虑了一个问题:如果每个员工的工资额都知道,最少需要准备多少张人民币,才能在给每位职员发工资的时候都不用找零呢? 这里假设员工的工资都是正整数,单位元,人民币一共有六种面额:**100元、50元、10元、5元、2元和1元**。 ### 输入格式 输入包含多组测试数据。 每组数据的第一行包含整数 **n**,表示员工数量。 第二行包含 **n** 个整数,表示每个员工的应发工资。 ### 输出格式 对于每组数据,输出一行结果,表示最少需要准备的人民币张数。 ### 数据范围 * **1 ≤ n ≤ 100** * **工资范围 [1, 5000]** * 输入最多包含 **100** 组数据。 ### 输入样例 ``` 3 1 2 3 2 1 2 ``` ### 输出样例 ``` 4 2 ``` ### 题目分析 简单模拟 ### 代码实现 ```c++ #include <iostream> using namespace std; const int N = 1e2 + 10, M = 6; int n, tar, dir[M] = {100,50,10,5,2,1}; void solve() { int cnt = 0; while(n--) { cin >> tar; for (int i = 0; i < M; ++i) { if (tar >= dir[i]) { cnt += tar / dir[i]; tar %= dir[i]; } } } cout << cnt << '\n'; } int main () { ios::sync_with_stdio(0); cin.tie(0); while(cin >> n) solve(); return 0; } ``` 最后修改:2023 年 09 月 23 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏