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

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

AtCoder ABC 187 A - Large Digits (灰色, 100 点)

文字列として処理した方が楽。

問題概要

3 桁の正の整数  A, B が与えられる。これらの整数の桁和の最大値を求めよ。

制約

整数  A, B はそれぞれ文字列として受け取った方が楽だと思われる。そうすると、

たとえば、3 桁の整数を表す文字列 A について

  • 百の位の値:A[0] - '0'
  • 十の位の値:A[1] - '0'
  • 一の位の値:A[2] - '0'

と表せる。ここで、- '0' というように '0' を引いているのは、char 型の '3' が表す値は 3 ではないためだ。処理系にもよるが、多くの処理系では、次のようになっている。

文字
'0' 48
'1' 49
'2' 50
'3' 51
'4' 52
'5' 53
'6' 54
'7' 55
'8' 56
'9' 57

よって、'3' を 3 に変換するためには、'0' (= 48) を引けばよいことが見て取れる。

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

int main() {
    string A, B;
    cin >> A >> B;
    int asum = (A[0] - '0') + (A[1] - '0') + (A[2] - '0');
    int bsum = (B[0] - '0') + (B[1] - '0') + (B[2] - '0');
    cout << max(asum, bsum) << endl;
}