1003: 最少錢幣數 (2013年中南大學研究生復試機試 )
阿新 • • 發佈:2019-03-17
時間 都是 每次 一行 輸入數據 bsp imp 用例 討論
提交: 225 解決: 109
[提交] [狀態] [討論版] [命題人:外部導入]
樣例輸入
1003: 最少錢幣數
時間限制: 1 Sec 內存限制: 128 MB提交: 225 解決: 109
[提交] [狀態] [討論版] [命題人:外部導入]
題目描述
作為A公司的職員,最盼望的日子就是每月的8號了,因為這一天是發工資的日子,養家糊口就靠它了。但是對於公司財務處的工作人員來說,這一天則是很忙碌的一天,財務處的小胡最近就在考慮一個問題:如果每個員工的工資額都知道,最少需要準備多少張人民幣,才能在給每位職員發工資的時候都不用老師找零呢?這裏假設員工的工資都是正整數,單位元,人民幣一共有100元、50元、10元、5元、2元和1元六種。輸入
輸入數據包含多個測試實例,每個測試實例的第一行是一個整數n(n<=100),表示老師的人數,然後是n個老師的工資(工資<5000)。輸出
每個測試用例輸出一行,即湊成錢數值M最少需要的錢幣個數。如果湊錢失敗,輸出“Impossible”。你可以假設,每種待湊錢幣的數量是無限多的。
樣例輸入
3
1 2 3
2
1 2
樣例輸出
4 2
1 #include<iostream>
2
3 using namespace std;
4 int teacher[101];
5 int main(){
6 int n;//人民幣一共有100元、50元、10元、5元、2元和1元六種。
7 while(cin>>n){
8 int total=0;
9 for(int i=0;i<n;i++){
10 cin>>teacher[i];
11 }
12 for(int i=0;i<n;i++){
13 int k=teacher[i];
14 int l1,l2,l3,l4,l5,l6;
15 l1=k/100;//貪心算法的精髓之處,每次都盡可能用面額大的錢幣付款
16 l2=(k-l1*100)/50;
17 l3=(k-l1*100-l2*50)/10;
18 l4=(k-l1*100-l2*50-l3*10)/5;
19 l5=(k-l1*100-l2*50-l3*10-l4*5)/2;
20 l6=k-l1*100-l2*50-l3*10-l4*5-l5*2;
21 total=total+l1+l2+l3+l4+l5+l6;
22 }
23 cout<<total<<endl;
24 }
25 return 0;
26 }
1003: 最少錢幣數 (2013年中南大學研究生復試機試 )