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

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

AtCoder ABC 235 A - Rotate (7Q, 灰色, 100 点)

上手くやろう!

問題概要

3 桁の整数  abc が与えられるので、

 abc + bca + cab

の値を求めよ。

解法

まず、整数  a, b, c の値を取得しよう。いろんな方法が考えられるが、3 桁の整数を文字列として入力を受け取り、0 文字目、1 文字目、2 文字目の値を見るのが簡単だと思われる。

その後は、

  •  abc = 100a + 10b + c
  •  bca = 100b + 10c + a
  •  cab = 100c + 10a + b

によって、 abc, bca, cab の値を求めて、これらを足せば良い。なお、ここまで分かっていればもっと簡単に求めることもできる。

 (100a + 10b + c) + (100b + 10c + a) + (100c + 10a + b) = 111(a + b + c)

となる。これを使うともっと簡単に求められる。

コード

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

int main() {
    string S;
    cin >> S;
    int res = (int)(S[0] - '0') + (int)(S[1] - '0') + (int)(S[2] - '0');
    cout << res * 111 << endl;
}