「コケいろ-Make Purse Light」の編集履歴(バックアップ)一覧はこちら

コケいろ-Make Purse Light」(2010/04/25 (日) 14:22:34) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

// 40分 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<math.h> struct sKozeni{ int Maisu,SiharaiMaisu; const int Kingaku; sKozeni(int kingaku) :Kingaku(kingaku){} void Init(){ SiharaiMaisu = 0; } }; int main(){ int Siharai; sKozeni Kozeni[4]={ 10,50,100,500 }; while(1){ scanf("%d",&Siharai); if(Siharai==0){ // 終了条件 break; } for(int i=0 ; i<4 ; i++){ // 4種類の硬貨枚数を格納、変数の初期化 scanf("%d",&Kozeni[i].Maisu); Kozeni[i].Init(); } // 支払い金額に関係なく、枚数を減らす int i=0; while( i != 3 ){ if( (Kozeni[i].Maisu * Kozeni[i].Kingaku) > Kozeni[i+1].Kingaku ){ Kozeni[i].Maisu--; Kozeni[i+1].Maisu++; } else{ i++; } } // 金額の小さな硬貨から出して支払う i = 0; while(1){ if( Kozeni[i].Maisu>0 ){ Siharai -= Kozeni[i].Kingaku; // 支払額の更新 Kozeni[i].Maisu--; // 所持枚数を減らす Kozeni[i].SiharaiMaisu++; // 支払い枚数を増やす if( Siharai<=0 ){ // 支払い終わったらループ終了 break; } } else{ i++; // 小銭の種類を次へ移す } } // 出力 for(int i=0 ; i<4 ; i++){ if( Kozeni[i].SiharaiMaisu>0 ){ printf("%d %d\n",Kozeni[i].Kingaku,Kozeni[i].SiharaiMaisu); } } puts(""); } return 0; }

表示オプション

横に並べて表示:
変化行の前後のみ表示:
記事メニュー
目安箱バナー