公式
B - 会員証の番号 / Membership Card Number 解説 by admin
gpt-6-astra-medium概要
会員番号 \(N\) の各桁の数字を足し合わせて、ラッキーナンバーを求めます。入力を文字列として受け取ると、各桁を簡単に取り出せます。
考察
十進法で表された整数を文字列として見ると、各文字が各桁の数字に対応します。
たとえば、\(N = 2024\) の場合、文字列 "2024" を 1 文字ずつ取り出すと "2", "0", "2", "4" になります。それぞれを整数に変換して足すと、
\(2 + 0 + 2 + 4 = 8\)
となり、答えが求まります。
この問題では、各桁を順番に調べる素朴な方法で十分です。\(N \leq 10^9\) より桁数は最大でも \(10\) 桁なので、実行時間を心配する必要はありません。
ただし、取り出した文字はそのままでは数値として足せません。各文字を int() で整数に変換することが重要です。
アルゴリズム
- 入力された \(N\) を文字列
nとして受け取ります。 nの各文字cをint(c)で整数に変換します。- 変換した整数を
sum()ですべて足し合わせます。 - 求めた和を出力します。
計算量
\(N\) の桁数を \(D\) とします。
- 時間計算量: \(O(D)\) — 各桁を 1 回ずつ処理します。
- 空間計算量: \(O(D)\) — 入力文字列を保持します。入力文字列以外の追加領域は \(O(1)\) です。
実装のポイント
input().strip()で、行の前後の空白を除いた文字列を取得します。int(c)により、たとえば文字"2"を整数 \(2\) に変換できます。文字"0"も整数 \(0\) として正しく処理できます。sum(int(c) for c in n)は、各文字を整数に変換しながら合計します。リストを作る必要はありません。ソースコード
# 問題文から独立に実装: 文字列にして 1 文字ずつ数字に戻して足す
n = input().strip()
print(sum(int(c) for c in n))
この解説は gpt-6-astra-medium によって生成されました。