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

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

AtCoder ABC 266 A - Middle Letter (7Q, 灰色, 100 点)

意外と、こういうの最初は詰まるかもしれない!

問題概要

英小文字からなる長さが奇数の文字列  S が与えられるので、 S の中央の文字を出力せよ。

考えたこと

 S の先頭の文字を 0 文字目と考えることにする。結論から言えば、 S の長さを  N としたとき、中央の文字は

S[N/2]

と表せる(S[(N - 1) / 2] でもよい)。具体的な数値で確かめてみよう。

  •  N = 1 のとき: N/2 = 0 であり、中央の文字は S[0]
  •  N = 3 のとき: N/2 = 1 であり、中央の文字は S[1]
  •  N = 5 のとき: N/2 = 2 であり、中央の文字は S[2]
  • ...

となり、確かに合っている。

コード

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

int main() {
    string S;
    cin >> S;
    cout << S[S.size()/2] << endl;
}