読者です 読者をやめる 読者になる 読者になる

初代Masteries

きっとモヒカンにもなれないお前たちに告げる!!!

Project Euler - Problem 31

Problem 31

イギリスの硬貨, ポンドとペンス(1p, 2p, 5p, 10p, 20p, 50p, £1 = 100p, £2 = 200p)から, £2(2ポンド)を作る組み合わせがいくつかあるかを求める問題.

use strict;
use warnings;

my $pattern = 0;
my $target = 200;

for (my $A = $target; $A >= 0; $A -= 200) {
    for (my $B = $A; $B >= 0; $B -= 100) {
        for (my $C = $B; $C >= 0; $C -= 50) {
            for (my $D = $C; $D >= 0; $D -= 20) {
                for (my $E = $D; $E >= 0; $E -= 10) {
                    for (my $F = $E; $F >= 0; $F -= 5) {
                        for (my $G = $F; $G >= 0; $G -= 2) {
                            $pattern++;
                        }
                    }
                }
            }
        }
    }
}

print "$pattern\n";

かなり汚いコードですが, これでも結構短い時間で答えが出てきます.