どーも、みつおです。
日本の硬貨でも問題作ってほしいよね。ポンドじゃなくてペンスじゃなくて円!!!
問題
イギリスでは硬貨はポンド£とペンスpがあり,一般的に流通している硬貨は以下の8種類である.
1p, 2p, 5p, 10p, 20p, 50p, £1 (100p) and £2 (200p).
以下の方法で£2を作ることが可能である.
1×£1 + 1×50p + 2×20p + 1×5p + 1×2p + 3×1p
これらの硬貨を使って£2を作る方法は何通りあるか?
出典:Problem31
解答
using System; namespace Problem31 { class Program { static void Main(string[] args) { Console.WriteLine(Solve()); Console.ReadLine(); } private static int Solve() { int ret = 0; int num = 200; //2ポンドのループ for (int coin200 = num; 0 <= coin200; coin200 -= 200) { //1ポンドのループ for (int coin100 = coin200; 0 <= coin100; coin100 -= 100) { //50ペンスのループ for (int coin50 = coin100; 0 <= coin50; coin50 -= 50) { //20ペンスのループ for (int coin20 = coin50; 0 <= coin20; coin20 -= 20) { //10ペンスのループ for (int coin10 = coin20; 0 <= coin10; coin10 -= 10) { //5ペンスのループ for (int coin5 = coin10; 0 <= coin5; coin5 -= 5) { //2ペンスのループ for (int coin2 = coin5; 0 <= coin2; coin2 -= 2) { //1ペンスのループ for (int coin1 = coin2; 0 <= coin1; coin1 -= 1) { //値が0になったときにカウントアップ if (coin1 == 0) ret++; } } } } } } } } return ret; } } }
出力
73682