LoginSignup
2
2

More than 5 years have passed since last update.

Project Euler Q52 【置換倍数】

Last updated at Posted at 2017-12-20

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

問題

$125874$を$2$倍すると$251748$となる. これは元の数$125874$と順番は違うが同じ数を含む.

$2x, 3x, 4x, 5x, 6x$ が $x$ と同じ数を含むような最小の正整数 $x$ を求めよ.

アプローチ

最小の正整数が$6$桁である場合、$1$倍から$6$倍まで並び替えで表せる為、使用されている数字は$6$個以下である。

解答

time seq 100000 999999 |
awk '$1%111111!=0' |
awk '{print $1,$1*2,$1*3,$1*4,$1*5,$1*6}' |
awk '{print $0,(length-5)/6}' |
awk '$7==length($1)' |
awk -v FS= '{delete s;for(i=1;i<=NF-length(index($0," ")-1);i++){s[$i]=1};print $0,length(s)-1}' |
awk '$7>=$8{print $1}'
142857

real    0m4.539s
user    0m6.636s
sys     0m0.117s

awk以外のコマンドも使いたいんだけど、問題の性質上awkが多くなるのは仕方ないのかなあ。

答え合わせ

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

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2