htkb-proconの日記

初心者がPythonで問題解いた記録

AtCoder Beginner Contest 090

去年末あたりから色々忙しいのと自信をなくしてた風味でしばらくやってませんでしたが、少しずつABCからやり直していく所存です(こっそりと

C - Flip,Flip, and Flip......

Submission #2186244 - AtCoder Beginner Contest 090

手書きシミュレーションがめっちゃ間違っててとても時間を無駄にした。N, Mともに1のときは1で、どっちかのみが1のときはmax(N, M) - 2で、両方とも2以上のときは(N-2)*(M-2)になる。

000000000000
011111111110
011111111110
011111111110
000000000000

必ずこんな感じになる

D - Remainder Reminder

Submission #2190651 - AtCoder Beginner Contest 090

すんごい思いつかなくて泣きそうになった。aをbで割ったあまりがK以上であるので、aがK以上でbがaより大きい組み合わせはすべて該当する。これは問題ない。問題はa>bのケースをどう数えるかで、K < b <= Nのbをループ回すんだけど、例えばK=2b=4のとき

f:id:htkb:20180311231201j:plain

こんな感じで*の部分が該当して、この*の部分はb周期でb-K個現れるので、そこを上手いこと足してあげる(意味不明)。自分でも言っててよくわかんないけどコードにすると数行なので。

ちっちゃいホワイトボード買ってみたのでコンテスト中に使ってみたけどマーカーの消しカスきたねえな!