Yuulis.log

トンネルを抜けるとそこは参照エラーであった。

【AtCoder】ABC 350 A - Past ABCs | 茶コーダーが解くAtCoder

atcoder.jp

実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 32

問題概要

長さが6で、先頭3文字がABC、後ろ3文字が数字の文字列  S が与えられる。  S が以下の348個の文字列 :

ABC001, ABC002, ..., ABC314, ABC315, ABC317, ABC318, ..., ABC348, ABC349

のいずれかに等しいかどうかを判定せよ。

制約

  • 問題文の通り。

考察

まずは  S の後ろ3文字を分割して数字に直そう。S.substr(3) S の3文字目以降の連続部分文字列を取得し、stoi()int型変数 (ここではxとした) へキャストしている。このとき0埋めは無視されるので、文字列の003は数字の3となる。

続いて、  1 \leq x \leq 349 (ただし, x \neq 316) であるかを判定する。なお、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;
}

atcoder.jp

実装時間: 5分以内