Official

A - スイッチの切り替え / Flipping Switches Editorial by physics0523 Editorial for printing


初心者の方へ


初期状態が Yes の場合、初期状態 No からボタンを \(1\) 回押した状態と同等であるとみなせます。
また、重要なのはボタンを押した回数の偶奇のみです。( \(2\) 回ボタンを押した状態とボタンを押していない状態とは同等です。 )

そこで、以下の解法が成立します。

  • \(S_i=\) Yes ならば \(K_i\) に \(1\) 加算する。
  • この時点で \(K_i\) が奇数、すなわち \(2\) で割った余りが \(1\) なら答えは Yes である。
  • この時点で \(K_i\) が偶数、すなわち \(2\) で割った余りが \(0\) なら答えは No である。

一連の解法は、 for 文と if 文の組み合わせ等で実現できます。

実装例 (C++):

#include<bits/stdc++.h>

using namespace std;

int main(){
  int N;
  cin >> N;
  while(N--){
    string S;
    int K;
    cin >> S >> K;
    if(S[0]=='Y'){K++;}
    if(K%2){cout << "Yes\n";}
    else{cout << "No\n";}
  }
  return 0;
}

posted:
last update: