1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Project Euler Q43 【部分文字列被整除性】

Posted at

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

問題

数$1406357289$は$0$から$9$のパンデジタル数である ($0$から$9$が$1$度ずつ現れるので). この数は部分文字列が面白い性質を持っている.

$d_1$を上位$1$桁目, $d_2$を上位$2$桁目の数とし, 以下順に$d_n$を定義する. この記法を用いると次のことが分かる.

$d_2d_3d_4=406$ は $2$ で割り切れる
$d_3d_4d_5=063$ は $3$ で割り切れる
$d_4d_5d_6=635$ は $5$ で割り切れる
$d_5d_6d_7=357$ は $7$ で割り切れる
$d_6d_7d_8=572$ は $11$ で割り切れる
$d_7d_8d_9=728$ は $13$ で割り切れる
$d_8d_9d_{10}=289$ は $17$ で割り切れる

このような性質をもつ$0$から$9$のパンデジタル数の総和を求めよ.

解答

seq -w 17 17 987 |
awk '{for(i=1;i<=int(987/7);i++){printf("%03d%03d\n",7*i,$1)}}' |
awk '{for(i=1;i<=int(987/2);i++){printf("%03d%06d\n",2*i,$1)}}' |
awk 'substr($1,6,3)%13==0' |
awk 'substr($1,5,3)%11==0' |
awk 'substr($1,3,3)%5==0' |
awk 'substr($1,2,3)%3==0' |
awk -v FS= '{delete a;for(i=1;i<=NF;i++){a[$i]+=1;b[NR]+=$i};print $0,length(a),b[NR]}' |
awk '$2==9{print (45-$3)$1}' |
awk '{s+=$1}END{print s}'
16695334890

seq 9876543210とかやればスッキリするだろうけど、時間かかってしまうからさすがに難しい。。

答え合わせ

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

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?