Project Euler 430

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

23着。
最初わからなかったけど、E(3, 2)を手で解いていたらだいたいわかった。
O(NlogM)らしいのでPyPyでごり押ししてみると、30分以上かかりそう。しかたなく、これを回している間にC++のコードを書いて流してみる。これだと3分くらいのようだ。
しかし、コードを眺めていると、誤差が積もり積もって正しい答えが出なさそうだ。これは簡単に回避できて、再び流してみる。
なにか変な値が表示される。よくわからない。仕方なく、途中経過を表示してみる。そうすると、O(NlogM)よりもっと速い方法がわかった。
PyPyでも18秒だった。