九度OJ—题目1549:货币问题

题目描述:

已知有面值为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 x,a,b,c,d,e,f,g;
    while(scanf("%d",&x)!=EOF)
    {
        a=b=c=d=e=f=g=0;
         
        a=x/100;
        x-=a*100;
        b=x/50;
        x-=b*50;
        c=x/20;
        x-=c*20;
        d=x/10;
        x-=d*10;
        e=x/5;
        x-=e*5;
        f=x/2;
        x-=f*2;
        g=x/1;
        x-=g*1;
     
        printf("%d\n",a+b+c+d+e+f+g);
    }  
    return 0;
}
 
/**************************************************************
    Problem: 1549
    User: vhreal
    Language: C
    Result: Accepted
    Time:10 ms
    Memory:912 kb
****************************************************************/


你可能感兴趣的:(贪心,九度OJ,货币问题,题目1549)