次の日>2010-03-08[過去問]SRM457(DIV2)ぼちぼちと過去問を続けます。第二問まではコンスタントに時間内で解けるようになってきました。|http://www.topcoder.com/stat?c=problem_statement&pm=10299問題の解釈にやや時間がかかった。|http://www.topcoder.com/stat?c=problem_statement&pm=10696最初場合分けして行こうと思ったが面倒になったので愚直に4重ループを使った。分に「?」がついていたら「0」に置き換える。|http://www.topcoder.com/stat?c=problem_statement&pm=10694とりあえず考えたことのメモ。1~nまでの数が使用でき、kで割った余りを使うとする。ここで、あらかじめ、kで割った余りがi(0≦i≦k-1)であるもの(1~n)を数えてmap[i]とおく。数をいちいち当てはめていったら時間がたりないので、このように場合分けしてみた。真ん中を埋め、周りの三つを同じ余りで埋める場合。こんな感じで計算できるんじゃないかと。6;周りの三つを二種類の余りを使って埋める場合。三つの余りを決めて、計算しようとしているが回した場合同じになるケースの判定が微妙。一律に3で割っていいものかどうか・・・ちなみに、色で塗ってない残り三つの場所には、すべて同じ余りの数は使わないようにしています。その場合、上のパターンと同じものができてしまうため。3;真ん中を埋め、周りの三つをすべて異なる余りを使って埋める場合。色で塗ってない残り三つの場所には、すべて異なる余りの数を使うようにしている。理由は上二つのパターンとかぶってしまうため。6;どこがおかしいか?最後の割り算の数が怪しいような気がします。形が対称でない第二のパターン。第二問(550点)カウンター296965。