寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

Aizu Online Judge in C++ #Volume5-0521 Change

Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。

・問題「おつり」
 太郎君はよくJOI雑貨店で買い物をする.
 JOI雑貨店には硬貨は500円,100円,50円,10円,5円,1円が十分な数だけあり,いつも最も枚数が少なくなるようなおつりの支払い方をする.
 太郎君がJOI雑貨店で買い物をしてレジで1000円札を1枚出した時,もらうおつりに含まれる硬貨の枚数を求めるプログラムを作成せよ.

・入力される値
 入力は複数のデータセットからなる.
 各データセットは1行からなり,太郎君が支払う金額(1以上1000未満の整数)が1つだけ書かれている.
 入力データはゼロ1つの行で終了する.
 データセットの数は 5 を超えない.

・期待する出力
 データセットごとにおつりに含まれる硬貨の枚数を1行に出力せよ.

僕が作成、提出したコードは、以下のとおりです。

/*
 Volume5-0521 Change
 http://judge.u-aizu.ac.jp/
 提出コードの解答例
 https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    while(1){
        int money,change,num=0;
        cin>>money;
        if(money==0){
            break;
        }
        change=1000-money;
        num+=(change/500);
        change%=500;
        num+=(change/100);
        change%=100;
        num+=(change/50);
        change%=50;
        num+=(change/10);
        change%=10;
        num+=(change/5);
        change%=5;
        num+=change;
        cout<<num<<endl;
    }
    return 0;
}

上記問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。

設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/
Volume5-0521 Change