Bash
ProjectEuler
数学

Project Euler Q38 【パンデジタル倍数】

More than 1 year has passed since last update.

Project Eulerをワンライナーで解いてみる。
間違っていたらコメントください。

問題

$192$ に $1, 2, 3$ を掛けてみよう.
$192 × 1 = 192$
$192 × 2 = 384$
$192 × 3 = 576$

積を連結することで$1$から$9$の パンデジタル数 $192384576$ が得られる. $192384576$ を $192$ と $(1,2,3)$ の連結積と呼ぶ.

同じようにして, $9$ を $1,2,3,4,5$ と掛け連結することでパンデジタル数 $918273645$ が得られる. これは $9$ と $(1,2,3,4,5)$ との連結積である.

整数と $(1,2,...,n) (n > 1)$ との連結積として得られる$9$桁のパンデジタル数の中で最大のものはいくつか?

解答

整数が$5$桁の場合は$9$桁のパンデジタル数を得られない。よって、整数は最大でも$4$桁。
かつ結果がパンデジタルなので、整数は最大でも$9876$である。

seq 9876 |
awk '{L=0;i=1;while(L<9){printf $1*i" ";L+=length($1*i);i++};print ""}' |
grep -v "0" |
tr -d ' ' |
awk 'length($1)==9' |
awk -v FS= '{for(i=1;i<=NF;i++){a[NR,$i]+=1};printf $0" ";for(i=1;i<=9;i++){printf a[NR,i]};print ""}' |
awk 'length($1)==length($2){print $1}' |
sort -n |
tail -1
932718654

答え合わせ

こちらのサイト様と一致していればOKとした。
http://kingyojima.net/pje/038.html