ScalaでProject Euler(147)

Problem 100

ラストです。
合計のディスクの枚数をn、青いディスクの枚数をbとすると、

(b/n)( (b-1)/(n-1)) = 1/2

です。変形していくと次のようになります。

(2n - 1)2 - 2(2b - 1)2 = -1

これはPell方程式ですね。

x2 - 2y2 = -1

の解は、

x + y√2 = (1 + √2)2m+1

と書けます。隣の解、(xm, ym)と(xm+1, ym+1)の関係は、

(xm+1, ym+1) = (3xm + 4ym, 2xm + 3ym)

となります。常に共に奇数となることがわかりますね。