けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 251 A - Six Characters (8Q, 灰色, 100 点)

少し面白い問題!

問題概要

長さが 1, 2, 3 のいずれかの文字列  S が与えられる。

 S を繰り返して得られる文字列であって、長さが 6 であるものを答えよ。

考えたこと

次のように考えれば良い。

  •  S の長さが 1 のとき: S を 6 回繰り返す
  •  S の長さが 2 のとき: S を 3 回繰り返す
  •  S の長さが 3 のとき: S を 2 回繰り返す

あとは、これを実装すればよい。

コード

ここでは for 文を使わずに実装したが、for 文を用いるともう少し簡潔に書ける。

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

int main() {
    string S;
    cin >> S;

    if (S.size() == 1) {
        cout << S << S << S << S << S << S << endl;
    } else if (S.size() == 2) {
        cout << S << S << S << endl;
    } else {
        cout << S << S << endl;
    }
}