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; } |