トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
No.32 貯金箱の憂鬱
■■■問題■■■
太郎君はいつも小銭を貯金していて、硬貨を貯金箱に入れています。
貯金箱の中身がある程度たまったので、
太郎君は銀行に行って両替をしてもらうことにしました。
太郎君の国では通貨として1000円札の紙幣と、100円、25円、1円の硬貨があります。
それ以外の金額の紙幣や硬貨はありません。
両替は、
・1円硬貨25枚で25円硬貨1枚に
・25円硬貨4枚で100円硬貨1枚に
・100円硬貨10枚で1000円札1枚に
それぞれ替えることができます。
入力に、貯金箱の中身としてそれぞれの硬貨の枚数が与えられるので、
硬貨の枚数が最も少なくなるように両替したとき、
最終的に太郎君が所持する硬貨の合計枚数を出力してください。
両替は手数料無く何度でもすることができます。
また、両替の前後で総額が変化してはいけません。
■■■入力■■■
L
M
N
1行目に、100円硬貨の枚数を表す整数 L(0 <= L <= 1000) が与えられます。
2行目に、 25円硬貨の枚数を表す整数 M(0 <= M <= 1000) が与えられます。
3行目に、 1円硬貨の枚数を表す整数 N(0 <= N <= 1000) が与えられます。
■■■出力■■■
硬貨の合計枚数を出力してください。
最後に改行してください。
C#のソース
using System;
using System.Collections.Generic;
class Program
{
static string InputPattern = "Input3";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("7");
WillReturn.Add("20");
WillReturn.Add("10");
//12
//25円硬貨20枚を100円硬貨5枚に両替し、
//さらに100円硬貨10枚を1000円札に両替するのが最も少なくなります。
}
else if (InputPattern == "Input2") {
WillReturn.Add("0");
WillReturn.Add("0");
WillReturn.Add("0");
//0
//貯金箱は空っぽでした
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
int L = int.Parse(InputList[0]);
int M = int.Parse(InputList[1]);
int N = int.Parse(InputList[2]);
int SumMoney = L * 100 + 25 * M + N;
int CoinCnt = 0;
SumMoney %= 1000;
CoinCnt += SumMoney / 100; SumMoney %= 100;
CoinCnt += SumMoney / 25; SumMoney %= 25;
CoinCnt += SumMoney;
Console.WriteLine(CoinCnt);
}
}
解説