BUCT_CODER1931:最少货币支付问题

来源:互联网 发布:打击网络低俗信息 编辑:程序博客网 时间:2024/05/22 21:53

1931: 最少货币支付问题

时间限制: 3 Sec  内存限制: 128 MB
提交: 537  解决: 205
[提交][状态][论坛]

题目描述

现行的货币体系为(1、2、5、10、20、50、100),请设计算法,计算要用最少的货币数支付指定金额N,每种货币需要使用的数量。

输入

第一行为测试用例个数n,n≤1000。 后面n行,每行为一个测试用例,每个测试用例为一个大于0的整数目标金额m,0≤m≤10000。

输出

对每个测试用例,输出一行由空格间隔的7个整数,分别表示1元、2元、5元、10元、20元、50元、100元所使用的数量。

样例输入

215189

样例输出

0 0 1 1 0 0 0 
0 2 1 1 1 1 1

典型的贪心算法,即尽可能的使用值较大的货币来满足。

#include<iostream>
#include<cstring>
using namespace std;int C[7]={1,2,5,10,20,50,100};int Num[7];int N;int m;void Func(){    for(int i=6;i>=0;i--)    {         Num[i]=m/C[i]; m=m%C[i];    }}int main(){    freopen("test.txt","r",stdin);    freopen("tested.txt","w",stdout);    cin>>N;    while (N--)    {         memset(Num,0,7);         cin>>m;         Func();         for(int i=0;i<7;i++)cout<<Num[i]<<" ";         cout<<endl;    }}


0 0
原创粉丝点击