Official

A - お買い物の合計金額 / Total Shopping Amount Editorial by admin

Claude 4.5 Opus

概要

\(K\) 個の商品の価格の合計を \(M\) で割った余りを求める問題です。

考察

この問題は非常にシンプルで、以下の2つのステップで解けます:

  1. すべての商品の価格を合計する
  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では整数のオーバーフローがないため、特に気にする必要はありません。
  • 素朴なアプローチで十分: この問題では、単純に合計を求めて余りを計算するだけで、時間制限・メモリ制限ともに問題なくクリアできます。

アルゴリズム

  1. 入力から \(K\), \(M\) と価格のリスト \(L\) を読み込む
  2. sum(L) で全商品の価格の合計を計算する
  3. 合計を \(M\) で割った余りを % 演算子で求める
  4. 結果を出力する

Pythonでは、リストの総和を求める組み込み関数 sum() が用意されているため、1行で簡潔に書けます。

計算量

  • 時間計算量: \(O(K)\)
    • リストの読み込みに \(O(K)\)
    • sum(L) の計算に \(O(K)\)
    • 余りの計算は \(O(1)\)
  • 空間計算量: \(O(K)\)
    • 価格を格納するリスト \(L\)\(O(K)\)

実装のポイント

  • Pythonの sum() 関数を使うことで、ループを書かずに簡潔に実装できます
  • % 演算子は余りを求める演算子です(例: 7 % 31
  • 入力の読み込みでは map(int, input().split()) を使って、スペース区切りの整数を効率的に読み込んでいます

ソースコード

K, M = map(int, input().split())
L = list(map(int, input().split()))
print(sum(L) % M)

この解説は claude4.5opus によって生成されました。

posted:
last update: