EX13 - 三人兄弟へのプレゼント Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

説明ページに戻る

問題文

三人兄弟の A 君と B 君と C 君は、お父さんに 1 つのプレゼントを貰うことになりました。
貰えるプレゼントの予算は「テストの合計点の積」で決まります。

三人兄弟はそれぞれ N 個のテストを受けました。
A 君と B 君と C 君の「i 番目のテストの点数」をそれぞれ A_i, B_i, C_i で表すと、プレゼントの予算は次の式で求まります。
プレゼントの予算 = (A_1 + A_2 + \cdots + A_N) \times (B_1 + B_2 + \cdots + B_N) \times (C_1 + C_2 + \cdots + C_N)

例えば、2 個のテスト受けた結果、A 君は 5 点と 7 点、B 君は 4 点と 10 点、C 君は 9 点と 2 点だったとします。
この場合、(5 + 7) \times (4 + 10) \times (9 + 2) = 12 \times 14 \times 11 = 1848 より、プレゼントの予算は 1848 円になります。

A 君はこの計算を行うプログラムを途中まで書きました。
A 君が書いたプログラムに追記し、プログラムを完成させてください。

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


A君が書いたプログラム
def sum_scores(scores):
    """
    1 人のテストの点数を表すリストから合計点を計算して返す関数

    引数 scores: scores[i] に i 番目のテストの点数が入っている
    返り値: 1 人のテストの合計点
    """
    # ここにプログラムを追記


def output(sum_a, sum_b, sum_c):
    """
    3 人の合計点からプレゼントの予算を計算して出力する関数

    引数 sum_a: A 君のテストの合計点
    引数 sum_b: B 君のテストの合計点
    引数 sum_c: C 君のテストの合計点
    返り値: なし
    """
    # ここにプログラムを追記


# -------------------
# ここから先は変更しない
# -------------------


def input_list(N):
    """
    N 個の入力を受け取ってリストに入れて返す関数

    引数 N: 入力を受け取る個数
    返り値: 受け取った N 個の整数値からなるリスト
    """
    l = list(map(int, input().split()))
    return l


# 科目の数 N を受け取る
N = int(input())

# それぞれのテストの点数を受け取る
A = input_list(N)
B = input_list(N)
C = input_list(N)

# それぞれの合計点を計算
sum_A = sum_scores(A)
sum_B = sum_scores(B)
sum_C = sum_scores(C)

# プレゼントの予算を出力
output(sum_A, sum_B, sum_C)

制約

  • 1 \le N \le 10
  • 0 \le A_i, B_i, C_i \le 100
  • N, A_i, B_i, C_i は整数

入力

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

N
A_1 A_2 \cdots A_N
B_1 B_2 \cdots B_N
C_1 C_2 \cdots C_N

出力

プレゼントの予算を出力してください。

出力の最後には改行が必要です。


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

入力例1

2
5 7
4 10
9 2

出力例1

1848

問題文で説明したケースです。


入力例2

3
100 100 100
100 100 100
100 100 100

出力例2

27000000

300 \times 300 \times 300 = 27000000 なので、三人兄弟は 27000000 円分のプレゼントを貰えることになりました。


入力例3

5
95 20 74 81 10
100 50 32 84 31
0 0 0 0 0

出力例3

0

C 君の合計点が 0 点だったので、プレゼントの予算も 0 円になります。


入力例4

2
10 0
0 5
1 1

出力例4

100

ヒント1

クリックでヒントを見る

今回の問題は今までの問題とは少し異なり、用意されたプログラムの動作を理解し、意図を読み取る必要があります。
プログラムがどのような順番で実行されていくかに注意して、A 君が書いたプログラムを読んでみましょう。

ヒント2

この問題は「A 君が書いたプログラムに追記して完成させる」という問題ですが、ヒントとして関数を使わずにこの問題と同じ処理をするプログラムを示します。このプログラムを参考にして A 君の sum_scores 関数と output 関数を完成させてください。

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

# 科目の数 N を受け取る
N = int(input())

# それぞれのテストの点数を受け取る

# N 個の入力をそれぞれ受け取り、リスト A, B, C とする
A = list(map(int, input().split()))
B = list(map(int, input().split()))
C = list(map(int, input().split()))

# 以下はプレゼントの予算を出力する処理

# テストの点数を表すリストからそれぞれの合計点を計算
sum_a = sum(A)
sum_b = sum(B)
sum_c = sum(C)

# 3 人の合計点からプレゼントの予算を計算して出力する
print(sum_a * sum_b * sum_c)

テスト入出力

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

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

テスト入力1
10
2 8 3 1 10 8 32 15 9 100
5 1 2 0 3 2 1 10 43 20
0 100 7 10 0 82 19 0 90 51
テスト出力1
5871804

解答例

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

クリックで解答例を見る

def sum_scores(scores):
    """
    1 人のテストの点数を表すリストから合計点を計算して返す関数

    引数 scores: scores[i] に i 番目のテストの点数が入っている
    返り値: 1 人のテストの合計点
    """
    s = sum(scores)
    return s


def output(sum_a, sum_b, sum_c):
    """
    3 人の合計点からプレゼントの予算を計算して出力する関数

    引数 sum_a: A 君のテストの合計点
    引数 sum_b: B 君のテストの合計点
    引数 sum_c: C 君のテストの合計点
    返り値: なし
    """
    print(sum_a * sum_b * sum_c)


# -------------------
# ここから先は変更しない
# -------------------


def input_list(N):
    """
    N 個の入力を受け取ってリストに入れて返す関数

    引数 N: 入力を受け取る個数
    返り値: 受け取った N 個の整数値からなるリスト
    """
    l = list(map(int, input().split()))
    return l


# 科目の数 N を受け取る
N = int(input())

# それぞれのテストの点数を受け取る
A = input_list(N)
B = input_list(N)
C = input_list(N)

# それぞれの合計点を計算
sum_A = sum_scores(A)
sum_B = sum_scores(B)
sum_C = sum_scores(C)

# プレゼントの予算を出力
output(sum_A, sum_B, sum_C)