公式

A - Weak Beats 解説 by mechanicalpenciI


文字列 \(S\) を標準入力から読み込み、問題文の指示通り、\(2\) 以上 \(16\) 以下の偶数 \(i\) について \(S\)\(i\) 文字目が 1 であるかを確認すれば良いです。これは for 文と if 文を用いて実装することができます。今回は文字数が決まっているため、調べるのは \(2,4,6,8,10,12,14,16\) 文字と完全に決まっており、if 文のみで実装する事も十分可能です。よって、この問題を解くことができました。

以下は、実装時の注意点です。

文字列中の文字を参照する時、多くの言語ではインデックスが zero-basedである事に注意してください。すなわち変数 \(s\) の中に文字列が格納されている時、\(s[0]\)\(1\) 文字目、\(s[1]\)\(2\) 文字目,…を表します。すなわち今回の問題で言えば \(s[2],s[4],\ldots, s[16]\) でなく、\(s[1],s[3],\ldots, s[15]\) を調べる必要があります。問題文中との添字のズレに注意してください。

また、 \(S\)\(i\) 文字目が1であるような\(16\) 以下の偶数 \(i\) が複数存在する時、 No を複数回出力しないように気をつけてください。 No を出力したらすぐに終了するようにするか、bool 型変数のフラッグなどで管理して最後にまとめて出力すると良いでしょう。

c++ による実装例:

#include <bits/stdc++.h>
using namespace std;

int main(void) {
	string s;
	cin>>s;
	for(int i=1;i<16;i+=2){
		if(s[i]!='0'){
			cout<<"No"<<endl;
			return 0;
		}
	}
	cout<<"Yes"<<endl;
	return 0;
}

Python による実装例:

s=input()

flag=True
for i in range(1,16,2):
	if s[i]!='0':
		flag=False

if flag:
	print("Yes")
else:
	print("No")

投稿日時:
最終更新: