题目描述
假设我们去小卖铺买零食,老板需要找我们n元,老板的小卖铺很忙,他需要快速找零(纸币数量越少,找钱找的越快),才能赚更多的钱。
现在老板有面值100元、50元、20元、10元、5元、2元及1元的零钱。请问如何找零需要的钱币数最少呢?
输入
第一行输入一个正整数 t 表示询问的次数 (1≤t≤100)
接下去t行,每行输入一个正整数 n 表示 老板需要给我们找钱的金额。(1≤n≤10000)
输出
对于每次询问,输出一行,表示每一张找零金额的面值,面值按降序输出,面值之间用空格隔开
样例输入
5 1 5 24 35 99
样例输出
1 5 20 2 2 20 10 5 50 20 20 5 2 2
代码时刻
贪心100分(只有一种题解吗?)
#include<iostream>
#include<queue>
using namespace std;
int a[7]={100,50,20,10,5,2,1};;
int main(){
int t;
cin>>t;
for(int i=0;i<t;i++){
int n;
cin>>n;
for(int i=0;i<7;i++){
while(n>=a[i]){
n-=a[i];
cout<<a[i]<<" ";
}
}cout<<endl;
}return 0;
}