読者です 読者をやめる 読者になる 読者になる

メモ

yukicoderで遊んでいる競プロゆるふわ勢

yukicoder No.384 マス埋めゲーム2

問題はこちら
No.384 マス埋めゲーム2 - yukicoder

yukicoder No.166 マス埋めゲーム - メモよりも少し頭を使う。
全てのマスが埋まった⇔「全ての列が選択された」または「全ての行が選択された」  となる
また、「選択されていない列の数+選択されていない行の数」という量を考えると、これはゲームが終了するまで1手ごとに1ずつ減っていく
よって、各プレイヤーが「自分が負けない」ように行動する場合、負けるのは上で定めた量が2の時に手番が回ってくるプレイヤー
これは(H+W-1)番目だからH+W-1とKがmod Nで一致するかどうかを見れば良い

int main(){
	long a,b,c,d;
	scanf("%ld%ld%ld%ld",&a,&b,&c,&d);
	printf((a+b-1-d)%c?"NO":"YES");
	return 0;
}

ぎゅっとする

long c,d;a;main(b){a=scanf("%d%d%ld%ld",&a,&b,&c,&d)<printf((a+b+~d)%c?"NO":"YES");}

84B

17/01/23追記
なんでprintf使ってるの?馬鹿なの?死ぬの?

long c,d;a;main(b){a=scanf("%d%d%ld%ld",&a,&b,&c,&d)<puts((a+b+~d)%c?"NO":"YES");}

実はdをintにしてっしまっても通る
INT_MAXより大きな値をint型に読み込もうとしたときの動作は未定義らしい

long c,d;a;main(b){a=scanf("%d%d%ld%d",&a,&b,&c,&d)<puts((a+b+~d)%c?"NO":"YES");}

81B