题目描述:
已知有面值为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;
}