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

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

AtCoder ABC 293 A - Swap Odd and Even (7Q, 灰色, 100 点)

言われた通りに処理していくだけだが、最初は意外と手こずるかもしれない。

問題概要

英小文字からなる長さ偶数の文字列  S が与えられる。

 i = 1, 2, \dots, \frac{|S|}{2} の順に、 S_{2i-1} S_{2i} を入れ替える。

操作後の文字列を出力せよ。

考えたこと

C++ では文字列の最初の文字は 0 番目であると考えるので、ここでも 0-indexed で考えよう。このとき、操作内容は次のように言い換えられる。

 i = 0, 1, \dots, \frac{|S|}{2}- の順に、 S_{2i} S_{2i+1} を入れ替える

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

コード

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

int main() {
    string S;
    cin >> S;
    for (int i = 0; i < S.size() / 2; i++) {
        swap(S[i * 2], S[i * 2 + 1]);
    }
    cout << S << endl;
}