EX10 - 平均との差 Editorial

Time Limit: 2 sec / Memory Limit: 1024 MB

説明ページに戻る

問題文

NN 人のテストの点数が与えられます。
それぞれの人の点数が平均点から何点離れているか計算してください。

平均点は次の式で求められます。ii 番目の人の点数は AiA_i で表します。

平均点=A1+A2++ANN平均点 = \dfrac{A_1 + A_2 + \cdots + A_N}{N}

平均点が整数にならない場合、小数点以下を切り捨てた数値を平均点とします。

例えば 33 人のテストの点数が「22 点、11 点、44 点」だったとき、2+1+43=2.333\frac{2 + 1 + 4}{3} = 2.333 \cdotsなので、平均点は小数点以下を切り捨てて 22 点になります。
そして、平均点から何点離れているかを計算した結果である「00 点、11 点、22 点」が答えになります。
00 点、1-1 点、22 点」でも「00 点、11 点、2-2 点」でも無いことに注意してください。

ページ末尾に問題のヒントがあります。詰まったら見てみましょう。


サンプルプログラム
Copy
  1. N = int(input())
  2. # ここにプログラムを追記
  3.  
N = int(input())
# ここにプログラムを追記


制約

  • 1N10001 \le N \le 1000
  • 0Ai1000 \le A_i \le 100
  • N,AiN, A_i は整数

入力

入力は次の形式で標準入力から与えられます。

NN
A1A_1 A2A_2 \cdots ANA_N

出力

それぞれの人の点数が平均点から何点離れているかを1行ずつ出力してください。

11人目の計算結果
22人目の計算結果
\vdots
NN人目の計算結果

ジャッジでは以下の入力例以外のケースに関してもテストされることに注意。

入力例1Copy

Copy
3
2 1 4

出力例1Copy

Copy
0
1
2

問題文中で説明した入出力です。


入力例2Copy

Copy
2
80 70

出力例2Copy

Copy
5
5

このケースの平均点は 7575 点です。
どちらの点数も平均点から 55 点離れています。


入力例3Copy

Copy
5
100 100 100 100 100

出力例3Copy

Copy
0
0
0
0
0

このケースの平均点は 100100 点です。


入力例4Copy

Copy
10
53 21 99 83 75 40 33 62 18 100

出力例4Copy

Copy
5
37
41
25
17
18
25
4
40
42

ヒント

今回の問題は次のプログラムに追記すれば解くことができます。
追記箇所が2つあることに注意してください。

クリックでヒントプログラムを見る

Copy
  1. N = int(input())
  2.  
  3. # スペース区切りの整数をリストとして受け取る
  4. A = list(map(int, input().split()))
  5.  
  6. # 合計点
  7. total = 0
  8.  
  9. # 合計点を計算
  10. for i in range(N):
  11. # ①ここにプログラムを追記
  12.  
  13. # 平均点 (Nで割って切り捨てた値)
  14. mean = total // N
  15.  
  16. # 平均点から何点離れているかを計算して出力
  17. for i in range(N):
  18. # ②ここにプログラムを追記
  19. # 負の数を出力しないように注意
N = int(input())

# スペース区切りの整数をリストとして受け取る
A = list(map(int, input().split()))

# 合計点
total = 0

# 合計点を計算
for i in range(N):
    # ①ここにプログラムを追記

# 平均点 (Nで割って切り捨てた値)
mean = total // N

# 平均点から何点離れているかを計算して出力
for i in range(N):
    # ②ここにプログラムを追記
    # 負の数を出力しないように注意

テスト入出力

書いたプログラムがACにならず、原因がどうしてもわからないときだけ見てください。

クリックでテスト入出力を見る

テスト入力1
1
80
テスト出力1
0

テスト入力2

データが大きすぎるため省略


解答例

必ず自分で問題に挑戦してみてから見てください。

クリックで解答例を見る

Copy
  1. N = int(input())
  2.  
  3. # スペース区切りの整数をリストとして受け取る
  4. A = list(map(int, input().split()))
  5.  
  6. # 合計点
  7. total = 0
  8.  
  9. # 合計点を計算
  10. for i in range(N):
  11. # ①ここにプログラムを追記
  12. total += A[i]
  13.  
  14. # 平均点 (Nで割って切り捨てた値)
  15. mean = total // N
  16.  
  17. # 平均点から何点離れているかを計算して出力
  18. for i in range(N):
  19. # ②ここにプログラムを追記
  20. # 負の数を出力しないように注意
  21. if A[i] > mean:
  22. print(A[i] - mean)
  23. else:
  24. print(mean - A[i])
N = int(input())

# スペース区切りの整数をリストとして受け取る
A = list(map(int, input().split()))

# 合計点
total = 0

# 合計点を計算
for i in range(N):
    # ①ここにプログラムを追記
    total += A[i]

# 平均点 (Nで割って切り捨てた値)
mean = total // N

# 平均点から何点離れているかを計算して出力
for i in range(N):
    # ②ここにプログラムを追記
    # 負の数を出力しないように注意
    if A[i] > mean:
        print(A[i] - mean)
    else:
        print(mean - A[i])


2025-04-14 (Mon)
08:53:37 +00:00