Problem : 找钱问题
Time Limit: 1 Sec Memory Limit: 64 MB
Submit: 12397 Solved: 3423
Description
买火车票时经常会碰到找钱问题。售票员手中有50、20、10、5、1元的钱币,你知道怎么找钱才能使找回的零钱张数最少吗?
Input
多组测试数据,输入需要找钱的钱数
Output
输出按下面格式: 第一行输出"change:",然后是你要找的钱 以下几行按面值从大到小输出要找的张数,格式如下:50 yuan: 1,如果1张也没有就不需要输出
Sample Input
76
Sample Output
change:76
50 yuan: 1
20 yuan: 1
5 yuan: 1
1 yuan: 1
HINT
这道题要审题。题目中是有10元纸币的。然后样例是因为0张不输出。另外在多次尝试之后题目的意思输入0的时候change:0还是要的,因为题目要第一行输出change:
代码如下:
#include<stdio.h>
int main(void)
{
int sum1,sum2,sum3,sum4,sum5,ch,i;
while(scanf("%d",&ch)!=EOF)
{
sum1=sum2=sum3=sum4=sum5=0;
if(ch==0)
printf("change:%d\n",ch);
else if(ch!=0)
{
printf("change:%d\n",ch);
for(i=0; ;i++)
{
if(ch>=50)
{sum1++;ch=ch-50;}
else if(ch>=20)
{
sum2++;ch=ch-20;
}
else if(ch>=10)
{
sum5++;ch=ch-10;
}
else if(ch>=5)
{
sum3++;ch=ch-5;
}
else if(ch>=1)
{
sum4++;ch=ch-1;
}
else if(ch==0)
break;
}
if(sum1!=0)
printf("50 yuan: %d\n",sum1);
if(sum2!=0)
printf("20 yuan: %d\n",sum2);
if(sum5!=0)
printf("10 yuan: %d\n",sum5);
if(sum3!=0)
printf("5 yuan: %d\n",sum3);
if(sum4!=0)
printf("1 yuan: %d\n",sum4);
}
}
return 0;
}