九度OJ-テーマ1549:通貨問題


タイトルの説明:
額面は1元、2元、5元、10元、20元、50元であることが知られています.100元の货币は若干(无限多と考えられる)、価格xの物品を支払う必要があり、おつりが発生していないことを适切に支払う必要があります.求めて、少なくとも数枚の货币が必要で、支払いを完了することができます.例えば、支払い価格が12元の物品であれば、少なくとも1枚の10元と1枚の2元、つまり2枚の货币が必要で、支払いを完了することができます.
入力:
複数組のテストデータを入力し、各組に1つの整数p(1<=p<=1億1000万)しか含まれず、支払うべき品目の価格を入力します.
出力:
入力データのセットごとに、最小必要な通貨の枚数を表す整数が出力されます.
サンプル入力:
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
",a+b+c+d+e+f+g); } return 0; } /************************************************************** Problem: 1549 User: vhreal Language: C Result: Accepted Time:10 ms Memory:912 kb ****************************************************************/