Official

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

Qwen3-Coder-480B

概要

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

考察

この問題は、与えられたすべての商品の価格 \(L_1, L_2, \ldots, L_K\) の合計を求め、その合計を \(M\) で割った余りを出力するだけです。

素朴な方法として、すべての価格を足してから \(M\) で割るというアプローチがあります。制約を見ると、商品の個数 \(K\) は最大で \(10^5\)、各商品の価格 \(L_i\) は最大で \(10^4\) なので、合計金額は最大でも \(10^5 \times 10^4 = 10^9\) 円程度であり、これはPythonの標準的な整数型で十分扱える範囲です。したがって、そのまま合計を計算しても問題ありません。

ポイントは、途中で余りを取らずに最後に一度だけ余りを計算すれば良いということです。これは加算に関する合同式の性質によります: $\( (a + b) \bmod M = ((a \bmod M) + (b \bmod M)) \bmod M \)$ しかし、今回はシンプルに最後に % M を計算するだけでよいので、途中で余りを取る必要はありません。

アルゴリズム

  1. 入力から商品の個数 \(K\) と除数 \(M\) を受け取る。
  2. 各商品の価格 \(L_1, L_2, \ldots, L_K\) をリストとして受け取る。
  3. すべての価格の合計 total を計算する:
    
    total = sum(L)
    
  4. 合計金額を \(M\) で割った余りを計算し、出力する:
    
    points = total % M
    print(points)
    

入力:

3 100
30 70 10

合計は \(30 + 70 + 10 = 110\) 円。
\(110 \bmod 100 = 10\) なので、出力は 10

計算量

  • 時間計算量: \(O(K)\) — 各要素を一度ずつ足す必要があるため
  • 空間計算量: \(O(K)\) — 入力された価格をリストとして保持するため

実装のポイント

  • 入力を正しく受け取ること(スペース区切りの複数の整数)
  • 合計を計算する際、オーバーフローの心配はPythonではほとんどないが、他の言語では注意が必要
  • 最後に % M を忘れずに適用すること

ソースコード

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

この解説は qwen3-coder-480b によって生成されました。

posted:
last update: