Project Euler 254(2)

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


最後、簡単だった。


最初はfの引数を1つずつ大きくしていってgを決めていったが、例えば342は234でいいので、ソートした配列を使うようにした。これで60くらいまではいける。実際には46までこれを使った。
それより大きい場合は、直接計算する。すなわち、sg(i)を一つずつ計算する。例えば、sg(47)なら、299999から始めて段々大きくして、適当に打ち切る。これで90くらいまでいける。しかし、80過ぎた頃から急に遅くなる。
74以上は形が決まるので、簡単に計算できる。
3つ全てあわせて、2秒くらい。


34番目の正答者だったようだ。