Posted at

Project Euler Q45 【三角数, 五角数, 六角数】

More than 1 year has passed since last update.

Project Eulerをワンライナーで解いてみる。

間違っていたらコメントください。


問題

三角数, 五角数, 六角数は以下のように生成される.

三角数

$T_n=\frac{1}{2}n(n+1)$

$1, 3, 6, 10, 15, ...$

五角数

$P_n=\frac{1}{2}n(3n-1)$

$1, 5, 12, 22, 35, ...$

六角数

$H_n=n(2n-1)$

$1, 6, 15, 28, 45, ...$

$T_{285} = P_{165} = H_{143} = 40755$であることが分かる.

次の三角数かつ五角数かつ六角数な数を求めよ.


アプローチ

三角数、五角数、六角数をそれぞれ$n$について解くと、

T_n=\frac{1}{2}n(n+1) \\

n^2+n-2T_n=0 \\
n=\frac{-1±\sqrt{1+8T_n}}{2}

P_n=\frac{1}{2}n(3n-1) \\

3n^2-n-2P_n=0 \\
n=\frac{1±\sqrt{1+24P_n}}{6}

H_n=n(2n-1) \\

2n^2-n-H_n=0 \\
n=\frac{1±\sqrt{1+8H_n}}{4}

※±は解の公式上記載しただけであり、実際にはこれらの値が正にならなければならない為、マイナスは考えなくてよい。


解答

seq 99999 |

awk '{print $1*(2*$1-1)}' |
awk '{print $1,(1+sqrt(1+24*$1))%6}' |
awk '$2==0' |
awk '{print $1,(-1+sqrt(1+8*$1))%2}' |
awk '$2==0{print $1}' |
tail -1
1533776805

六角数は三角数であるらしいので、三角数の判断は不要かも。


答え合わせ

こちらのサイト様と一致していればOKとした。

http://kingyojima.net/pje/045.html