実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 32
問題概要
長さが6で、先頭3文字がABC
、後ろ3文字が数字の文字列 が与えられる。 が以下の348個の文字列 :
ABC001, ABC002, ..., ABC314, ABC315, ABC317, ABC318, ..., ABC348, ABC349
のいずれかに等しいかどうかを判定せよ。
制約
- 問題文の通り。
考察
まずは の後ろ3文字を分割して数字に直そう。S.substr(3)
で の3文字目以降の連続部分文字列を取得し、stoi()
でint
型変数 (ここではx
とした) へキャストしている。このとき0埋めは無視されるので、文字列の003
は数字の3
となる。
続いて、 であるかを判定する。なお、0は条件を満たさないので注意。
コード
#include <bits/stdc++.h> using namespace std; // ======================================== // int main() { string S; cin >> S; int x = stoi(S.substr(3)); if (x != 316 && 1 <= x && x <= 349) cout << "Yes" << endl; else cout << "No" << endl; }
実装時間: 5分以内