【AtCoder】AGC025解説(Python)

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)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次