実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 31
問題概要
文字列 が以下の条件を全て満たすとき、 を「11/22 文字列」と呼ぶ。
- は奇数である。
- 文字目から 文字目までが
1
である。 - 文字目が
/
である。 - 文字目から 文字目までが
2
である。
1, 2, /
からなる長さ の文字列 が与えられるので、 が「11/22 文字列」であるか判定せよ。
制約
考察
基本的には、「11/22 文字列」の条件に合致しているか上からチェックしていけばよい。
1つ目と3つ目はif
文で、2つ目と4つ目はfor
文を使って判定できる。コードを書く際は 0-indexed に注意。
コード
#include <bits/stdc++.h> using namespace std; #define rep(i, start, end) for (auto i = (start); (i) < (end); (i)++) // ======================================== // int main() { int N; string S; cin >> N >> S; if (N % 2 == 0) { cout << "No" << endl; return 0; } rep(i, 0, N / 2) { if (S[i] != '1') { cout << "No" << endl; return 0; } } if (S[N / 2] != '/') { cout << "No" << endl; return 0; } rep(i, N / 2 + 1, N) { if (S[i] != '2') { cout << "No" << endl; return 0; } } cout << "Yes" << endl; return 0; }
実装時間: 5分