srupのメモ帳

競プロで解いた問題や勉強したことを記録していくメモ帳

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

問題

問題概要

縦横のどちらか一列すべてを消すゲーム。指定された番号の人が負けるかどうかを判定する問題。

解法

この問題はプレイヤーが負けないように選べはゲームをする回数はh + w - 1に必ずなるので、あとはmodで計算。ただし与えられる数字は0オリジンではなく、1オリジンなので、k % nとして、0オリジンになるように。

ミス

オーバーフローで1回WA

コード

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
using namespace std;

int main(void){
    long long  h, w, n, k;
    cin >> h >> w >> n >> k;
    long long sum = h + w - 1;
    long amari = sum % n;
    //k % nで0オリジンにする
    if(amari == (k % n)) printf("YES\n");
    else printf("NO\n");
    return 0;
}