ScalaでProject Euler(135)

Problem 91

前回の3を効率よくします。Pを固定してQをPが直角になるように配置します。例えば、L = 10として、P(4, 6)としましょう。OPと直交するベクトルは(6, -4) = 2(3, -2)だから、Qは(4 + 3t, 6 - 2t)と書けます。Qのx座標は10以下だからt <= [ 6 / 3 ]、またy座標は0以上だからt <= [ 6 / 2 ]なので、あわせてt <= 2でQは2通りあります。

L = 10000で10秒でした。