C. Flip,Flip, and Flip...... | AtCoder Regular Contest 091
問題
N行M列, カード
初期状態: すべて表
すべてのカードについて、そのカードと周囲8枚のカードを裏返す
最終状態の裏のカードを数えよ
1<=N,M<=10^9
解説
カードが十分多いとき
ほぼすべてのカードが自分と周りの計9枚によって裏返される
よって裏
あとは残りのカードをちゃんと調べるだけ
実はN>=2かつM>=2のときは外周のマスはすべて表、
それ以外のマスはすべて裏になる。
なのでそうでない場合だけ、分けて計算する。
int main() { ll N, M; cin >> N >> M; ll ans = 0; if (N == 1 && M == 1)ans = 1; else if (N == 1)ans = M - 2; else if (M == 1)ans = N - 2; else ans = (N - 2)*(M - 2); cout << ans << endl; }