AtCoder Grand Contest 025の解説記事です。
目次
AGC025 A – Digits Sum
問題
問題文の要約は以下の通りです。
問題の要約
正の整数 \(A\) , \(B\) があり、その和を \(N\) とする。
\(A\) の各位の和と \(B\) の各位の和の合計の最小値を求めよ。
解説
\(N\) が10の累乗で表せるかどうかで場合分けをする。
解説
\(N\) が10の累乗で表せる時を考える。
\(N = 10^{n}\) と置く。
\(A = a×10^{n-1}\) , \(B =b×10^{n-1}\) として、\(a + b = 10\) の時が最小になります。
\(N\) が10の累乗で表されないとき、
\(A\) の各位の和と \(B\) の各位の和の合計が\(N\) の各位の和となるとき最少となります。
例えば、\(N =36902\)であれば、\(A = 36901\) と \(B =1\) のようにできます。
解答
N=input()
# Nが10の累乗の時
if N=='10' or N=='100' or N=='1000' or N=='10000' or N=='100000':
print(10)
# それ以外の時はNの各位の和の合計
else:
sum=0
for i in N:
sum+=int(i)
print(sum)
先に各桁の和を求めることもできます。
n = list(map(int, input()))
sum = sum(n)
# Nが10の累乗の時は和が1になる
if sum == 1:
print(10)
else:
print(sum)