Official
A - スイッチの切り替え / Flipping Switches Editorial
by
A - スイッチの切り替え / Flipping Switches Editorial
by
physics0523
Editorial for printing
初心者の方へ
- AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
- また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。
- C++入門 AtCoder Programming Guide for beginners (APG4b) は、競技プログラミングのための C++ 入門用コンテンツです。
- Python入門 AtCoder Programming Guide for beginners (APG4bPython) は、競技プログラミングのための Python 入門用コンテンツです。
初期状態が 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:
