427.1

昔は逆だったのに、600は600ってほど難しくはないし900は900ってほど簡単でもない気がする。

250

一日の長さと一年の長さが与えられるので、一年をN日ないしN+1日にしたときにできるループの最小長を求めよ、という問題。


一日の長さと一年の長さのgcdを求めて、一日の長さを割る、というような形に数式を変形できる。

600

北に1歩進み、90度回りdig(1)歩進み、90度回りdig(dig(1))歩進み...、ということをK回繰り返した時の位置を答えよ、という問題。


状態をメモしておくと数回後にループするのでmodを取るだけ。行列乗算に落してべき乗計算でもいい。(600なのですぐにはループしないかと思ったけれど、そうでもないみたい。)

900

数列のPermutationのうち、すべての隣接する要素の差がある数Pの倍数にならないものは何通りあるか、という問題。


結局Pで割った余りについてグループ分けしてやって、直前に並べたグループが後いくつ要素を残しているか、とか、同じ要素数のグループがいくつあるか、とかでまとめてやればそのうち解けそう。要はメモ付き探索をしないといけないけれど、どうやってメモできるだけコンパクトな状態にまとめ上げるかということになるんだと思う。でも解けていない。