公式
B - 会員証の番号 / Membership Card Number 解説 by admin
gpt-6-astra-medium概要
会員番号 \(N\) の各桁の数字を足し合わせ、その合計を求める問題です。\(N\) を文字列として読み込み、1 文字ずつ整数に変換して足します。
考察
十進法の整数を文字列として扱うと、各文字がそのまま各桁の数字に対応します。
たとえば、\(N = 2024\) を文字列 "2024" として読み込むと、"2"、"0"、"2"、"4" を順に取り出せます。それぞれを整数に変換して足すと、\(2 + 0 + 2 + 4 = 8\) となります。
この問題では、各桁を順に調べる素朴な方法で十分です。\(N \leq 10^9\) なので桁数は最大 \(10\) 桁しかなく、実行時間は問題になりません。
ただし、読み込んだ文字は文字列なので、そのまま数値として足すことはできません。各文字を int() で整数に変換する必要があります。
アルゴリズム
- \(N\) を文字列として読み込む。
- 文字列の各文字を整数に変換する。
- 変換した整数を
sum()で合計し、出力する。
各桁の数字をちょうど一度ずつ足しているため、得られる合計はラッキーナンバーの定義と一致します。
計算量
\(N\) の桁数を \(D\) とします。
- 時間計算量: \(O(D)\)
- 空間計算量: \(O(D)\)
入力文字列の保存に \(O(D)\) の領域を使います。合計の計算で使う追加の領域は \(O(1)\) です。
実装のポイント
input().strip()で、入力を文字列として読み込み、前後の空白などを取り除きます。int(c) for c in Nは、文字列Nの各文字cを整数に変換するジェネレータ式です。sum()に渡すことで、変換した整数をリストに保存せず、そのまま合計できます。数字の
0もint("0")で正しく変換できるため、特別な処理は不要です。ソースコード
N = input().strip()
print(sum(int(c) for c in N))
この解説は gpt-6-astra-medium によって生成されました。