问题 G: 找零钱
时间限制: 1.000 Sec 内存限制: 128 MB
提交: 604 解决: 419
[提交] [状态] [命题人:外部导入]
题目描述
小智去超市买东西,买了不超过一百块的东西。收银员想尽量用少的纸币来找钱。
纸币面额分为50 20 10 5 1 五种。请在知道要找多少钱n给小明的情况下,输出纸币数量最少的方案。 1<=n<=99;
输入
有多组数据 1<=n<=99;
输出
对于每种数量不为0的纸币,输出他们的面值*数量,再加起来输出
样例输入 Copy
25 32
样例输出 Copy
20*1+5*1 20*1+10*1+1*2
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
int main(int argc, char *argv[])
{
int sum;
while(scanf("%d",&sum)!=EOF)
{
if (sum<1||sum>99)
break;
int a[5]= {0};
int b[5]= {50,20,10,5,1};
while(sum-50>=0)
{
a[0]+=1;
sum-=50;
}
while(sum-20>=0)
{
a[1]+=1;
sum-=20;
}
while(sum-10>=0)
{
a[2]+=1;
sum-=10;
}
while(sum-5>=0)
{
a[3]+=1;
sum-=5;
}
a[4]=sum;
string rs="";
int j=0;
for(int i=0; i<5; i++)
{
if(a[i]>0)
{
if(j>0)
printf("+");
printf("%d*%d",b[i],a[i]);
j++;
}
}
printf("\n");
}
return 0;
}
604

被折叠的 条评论
为什么被折叠?



