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

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

AtCoder AGC 025 A - Digits Sum (200 点)

普通の 200 点でよかった。

AGC 025 A Digits Sum

問題概要

高橋君は 2 つの正の整数 A と B を持っています。 それらの和が N であると分かっているとき、 A の各位の和と B の各位の和の合計として考えられる最小の値を求めよ。

制約

  • 2 <= N <= 105

解法

「各位の和を求める方法」は ABC 083 B - Some Sums にて。 普通に A の値を 1 から N-1 まで試しても大丈夫。

#include <iostream>
using namespace std;

long long N;

long long calc(int N) {
    int res = 0;
    while (N > 0) {
        res += N % 10;
        N /= 10;
    }
    return res;
}

int main() {
    while (cin >> N) {
        long long res = 1LL<<60;
        for (long long i = 1; i < N; ++i) {
            long long j = N - i;
            long long tmp = calc(i) + calc(j);
            res = min(res, tmp);
        }
        cout << res << endl;
    }
}