公式
A - お買い物の合計金額 / Total Shopping Amount 解説 by admin
Claude 4.5 Opus概要
\(K\) 個の商品の価格の合計を \(M\) で割った余りを求める問題です。
考察
この問題は非常にシンプルで、以下の2つのステップで解けます:
- すべての商品の価格を合計する
- その合計を \(M\) で割った余りを求める
具体例で確認
例えば、\(K = 3\), \(M = 100\) で、商品の価格が \(L = [150, 80, 35]\) の場合: - 合計金額: \(150 + 80 + 35 = 265\) 円 - ポイント: \(265 \mod 100 = 65\) ポイント
この問題で注意すべき点
- オーバーフローの心配: \(K\) は最大 \(10^5\)、各 \(L_i\) は最大 \(10^4\) なので、合計は最大 \(10^5 \times 10^4 = 10^9\) 程度です。Pythonでは整数のオーバーフローがないため、特に気にする必要はありません。
- 素朴なアプローチで十分: この問題では、単純に合計を求めて余りを計算するだけで、時間制限・メモリ制限ともに問題なくクリアできます。
アルゴリズム
- 入力から \(K\), \(M\) と価格のリスト \(L\) を読み込む
sum(L)で全商品の価格の合計を計算する- 合計を \(M\) で割った余りを
%演算子で求める - 結果を出力する
Pythonでは、リストの総和を求める組み込み関数 sum() が用意されているため、1行で簡潔に書けます。
計算量
- 時間計算量: \(O(K)\)
- リストの読み込みに \(O(K)\)
sum(L)の計算に \(O(K)\)- 余りの計算は \(O(1)\)
- 空間計算量: \(O(K)\)
- 価格を格納するリスト \(L\) に \(O(K)\)
実装のポイント
- Pythonの
sum()関数を使うことで、ループを書かずに簡潔に実装できます %演算子は余りを求める演算子です(例:7 % 3は1)- 入力の読み込みでは
map(int, input().split())を使って、スペース区切りの整数を効率的に読み込んでいます
ソースコード
K, M = map(int, input().split())
L = list(map(int, input().split()))
print(sum(L) % M)
この解説は claude4.5opus によって生成されました。
投稿日時:
最終更新: