Project Euler 303(2)

http://projecteuler.net/index.php?section=problems&id=303


この問題はもう200人以上解けているからいいだろう。
nが9の連続(あるいはその倍数)になっているときにf(n)が大きくなることは実験してみるとすぐにわかる。そこで、例えば99で割れる数を出すようにする。昨日がんばってみたが、うまくできなかった。今日はインチキで適当にごまかす。99で割り切れる必要十分条件は、2桁ずつ区切って和を取ってそれが99で割り切れることである。例えば、3366 → 33 + 66 = 99で割り切れる。だから、0〜2の数字しか使えない場合、1122222222が最小になる。この桁数の99で割り切れる数を全て出せるようにした。
これでPythonでだいたい50秒になった。
ここでは、999でも9999でも割り切れない、9899が一番最後に求まった。