Project Euler 219

プロジェクトオイラー
http://projecteuler.net/index.php?section=problems&id=219

Outstanding, inamori! You have advanced to the highest level possible.

ということで、おそらく最後のレベルアップをした。世界で98番目。ここまで長かった。あと5問。


この問題は、コードの頭を0か1で分類でき、それぞれの分配をどうするかで最適化をかけるというもの。これを効率的にやる。再帰の形にできるが、キャッシュを使っても非常に時間がかかる。そこで、数学的には証明できないが、下に凸になっていてかつ同じ勾配が長く続く(らしい)という性質を用いて、うまくキャッシュしていく。3秒弱だった。