問題
-
What is the largest 1 to 9 pandigital 9-digit number that can be formed as the concatenated product of an integer with (1,2, ... , n) where n > 1?
-
整数と(1,2,...,n) (n > 1) との連結積として得られる9桁のPandigital数の中で最大のものを答えよ.
解答
乗数が1, 2, ..., n (n > 1)で桁数は9なので、被乗数mは1から9999の範囲です。 範囲が分かれば後は簡単で、m×1から順に積を連結していって、丁度9桁となったときにPandigital数であればいいわけです。 Pandigital数を定義通り考えれば「1から9のすべての数字が1回以上現れる数」ですが、この問題では桁数の制約からいずれの数字も1回ずつしか現れないため、「同じ数字が重複して出現せず、0が現れない数」に読み替えることができます。Perlだとこちらの方が正規表現マッチングが高速でした。
#!/usr/bin/env perl
use strict;
use warnings;
use feature qw/say/;
use List::Util qw/max/;
say max map {
my $cat = '';
for (my $mul = 1; length $cat < 9; $cat .= $_ * $mul++) {}
(length $cat == 9 and $cat !~ /0/ and $cat !~ /(\d).*\1/) ? $cat : ()
} 1 .. 9999;
コメント
コメントを投稿