SRM427

250

いろいろと計算するとgcdをとればよいことが分かる.

600

実験するとdig(x)は循環する*1ことが分かるので、剰余をとるだけなんだけど初期化をミスしてSystem testで落ちる

900

Pでの余りの個数に注目してやると、残り個数の状態(個数に関してソートした状態)とつぎに取れない余りの個数が同一であれば同一の結果が返ってくるので状態数は30の分割数 * 30=5604* 30ぐらいしかないのでメモ化探索で通る。思いつかなかった+Practiceで通すときにJavaだと(-1)%3=-1になるのに気付かないでかなりはまったので思いついてもたぶん通ってなかった.

250で0割りをしているコードを2つほど見つけてChallengeで若干稼いだので250しか解いていない割にはRateは2181->2139とあまり下がらなかった.

*1:たぶんdig(x+y) = dig{dig{x} + dig{y}}がいえるはず