题目描述:
已知有面值为1元,2元,5元,10元,20元,50元,100元的货币若干(可认为无穷多),需支付价格为x的物品,并需要恰好支付,即没有找零
产生。
求,至少需要几张货币才能完成支付。
如,若支付价格为12元的物品,最少需要一张10元和一张2元,即两张货币就可完成支付。
输入:
输入包含多组测试数据,每组仅包含一个整数p(1<=p<=100000000),为需支付的物品价格。
输出:
对于每组输入数据,输出仅一个整数,代表最少需要的货币张数。
样例输入:
10
11
13
样例输出:
1
2
3
来源:
2014年王道论坛研究生机试练习赛(二)
#include<stdio.h> int main() { int i,n,sum; while(scanf("%d",&n)!=EOF) { sum=0;i=0; if(n>=100) { sum+=n/100; n-=100*(n/100); } if(n>=50&&n<100) { sum+=n/50; n-=50*(n/50); } if(n>=20&&n<50) { sum+=n/20; n-=20*(n/20); } if(n>=10&&n<20) { sum+=n/10; n-=10*(n/10); } if(n>=5&&n<10) { sum+=n/5; n-=5*(n/5); } if(n>=2&&n<5) { sum+=n/2; n-=2*(n/2); } if(n>=1&&n<2) { sum+=n/1; n-=1*(n/1); } printf("%d\n",sum); } return 0; }