296.1

全然ダメなセット。こういうのが出ると手に負えないというか、必ず間違えるというか。

250

長さKのものがN個あるとき、大きさLの箱に入れる場合、箱はいくつ必要か答えよ、という問題。ただし、箱の中に13の倍数個入れてはいけない。


13の倍数という条件がなければ単純な問題。13の倍数個1箱に入れるケースと、X個入る状況で、最後のだけX-1個になって、X-1が13の倍数のケースを例外処理する。理屈はそうだけれど、もっと安全なソースを書く方法を採用するべきだと思う。どうしたものか。

500

文字列全体に対して、ある文字を3文字の文字列に置き換えるという処理をN回繰り返した状況で、特定の部分に含まれる文字の分布を答えよ、という問題。


直前の分布が分かっていれば遷移させるだけなので、3の倍数の部分を取り出し、端数部分は例外処理をしてやればいい。端数部分の例外処理をしているときにint溢れが起こるので、そこを注意しないといけないというひどい問題。

1000

立方体の箱の6面に色が塗られていたものが複数与えられる。色の種類は全部で7種類。できるだけ少ない塗り替え作業で、すべての箱の塗り方を揃えよ、という問題。


箱の色の塗り方を整数か何かにエンコードし直して、回転で等しいものすべてを取り出す。後は全通りとの差分を計算していけば終わるらしい。


箱のローテーションは64通りよりも少ないのだけれど、同じ状態になるローテーションの圧縮を真面目に計算しなかったので微妙に間に合わなかった。C++だと間に合うのかも知れない。ローテーションの計算をメモしたら余計に遅くなるという悲しい状況にもなった。