Time Limit: 2 sec / Memory Limit: 256 MB
問題文
三人兄弟のA君とB君とC君は、お父さんに1つのプレゼントを貰うことになりました。
貰えるプレゼントの予算は「テストの合計点の積」で決まります。
三人兄弟はそれぞれ個のテストを受けました。
A君とB君とC君の「番目のテストの点数」をそれぞれで表すと、プレゼントの予算は次の式で求まります。
例えば、2個のテスト受けた結果、A君は点と点、B君は点と点、C君は点と点だったとします。
この場合、から、プレゼントの予算は円になります。
A君はこの計算を行うプログラムを途中まで書きました。
A君が書いたプログラムに追記し、プログラムを完成させてください。
ページ末尾に問題のヒントがあります。詰まったら見てみましょう。
A君が書いたプログラム
- #include <bits/stdc++.h>
- using namespace std;
- // 1人のテストの点数を表す配列から合計点を計算して返す関数
- // 引数 scores: scores.at(i)にi番目のテストの点数が入っている
- // 返り値: 1人のテストの合計点
- int sum(vector<int> scores) {
- // ここにプログラムを追記
- }
- // 3人の合計点からプレゼントの予算を計算して出力する関数
- // 引数 sum_a: A君のテストの合計点
- // 引数 sum_b: B君のテストの合計点
- // 引数 sum_c: C君のテストの合計点
- // 返り値: なし
- void output(int sum_a, int sum_b, int sum_c) {
- // ここにプログラムを追記
- }
- // -------------------
- // ここから先は変更しない
- // -------------------
- // N個の入力を受け取って配列に入れて返す関数
- // 引数 N: 入力を受け取る個数
- // 返り値: 受け取ったN個の入力の配列
- vector<int> input(int N) {
- vector<int> vec(N);
- for (int i = 0; i < N; i++) {
- cin >> vec.at(i);
- }
- return vec;
- }
- int main() {
- // 科目の数Nを受け取る
- int N;
- cin >> N;
- // それぞれのテストの点数を受け取る
- vector<int> A = input(N);
- vector<int> B = input(N);
- vector<int> C = input(N);
- // それぞれの合計点を計算
- int sum_A = sum(A);
- int sum_B = sum(B);
- int sum_C = sum(C);
- // プレゼントの予算を出力
- output(sum_A, sum_B, sum_C);
- }
#include <bits/stdc++.h> using namespace std; // 1人のテストの点数を表す配列から合計点を計算して返す関数 // 引数 scores: scores.at(i)にi番目のテストの点数が入っている // 返り値: 1人のテストの合計点 int sum(vector<int> scores) { // ここにプログラムを追記 } // 3人の合計点からプレゼントの予算を計算して出力する関数 // 引数 sum_a: A君のテストの合計点 // 引数 sum_b: B君のテストの合計点 // 引数 sum_c: C君のテストの合計点 // 返り値: なし void output(int sum_a, int sum_b, int sum_c) { // ここにプログラムを追記 } // ------------------- // ここから先は変更しない // ------------------- // N個の入力を受け取って配列に入れて返す関数 // 引数 N: 入力を受け取る個数 // 返り値: 受け取ったN個の入力の配列 vector<int> input(int N) { vector<int> vec(N); for (int i = 0; i < N; i++) { cin >> vec.at(i); } return vec; } int main() { // 科目の数Nを受け取る int N; cin >> N; // それぞれのテストの点数を受け取る vector<int> A = input(N); vector<int> B = input(N); vector<int> C = input(N); // それぞれの合計点を計算 int sum_A = sum(A); int sum_B = sum(B); int sum_C = sum(C); // プレゼントの予算を出力 output(sum_A, sum_B, sum_C); }
制約
- は整数
入力
入力は次の形式で標準入力から与えられます。
出力
プレゼントの予算を出力してください。
出力の最後には改行が必要です。
ジャッジでは以下の入力例以外のケースに関してもテストされることに注意。
入力例1Copy
2 5 7 4 10 9 2
出力例1Copy
1848
問題文で説明したケースです。
入力例2Copy
3 100 100 100 100 100 100 100 100 100
出力例2Copy
27000000
なので、三人兄弟は円分のプレゼントを貰えることになりました。
入力例3Copy
5 95 20 74 81 10 100 50 32 84 31 0 0 0 0 0
出力例3Copy
0
C君の合計点が点だったので、プレゼントの予算も円になります。
入力例4Copy
2 10 0 0 5 1 1
出力例4Copy
100
ヒント1
クリックでヒントを見る
今回の問題は今までの問題とは少し異なり、用意されたプログラムの動作を理解し、意図を読み取る必要があります。
プログラムがどのような順番で実行されていくかに注意して、A君が書いたプログラムを読んでみましょう。
ヒント2
この問題は「A君が書いたプログラムに追記して完成させる」という問題ですが、ヒントとして関数を使わずにこの問題と同じ処理をするプログラムを示します。このプログラムを参考にしてA君のsum関数とoutput関数を完成させてください。
クリックでヒントプログラムを見る
- #include <bits/stdc++.h>
- using namespace std;
- int main() {
- // 科目の数Nを受け取る
- int N;
- cin >> N;
- // それぞれのテストの点数を受け取る
- // N要素の配列A,B,Cを宣言
- vector<int> A(N), B(N), C(N);
- // N個の入力をそれぞれ受け取る
- for (int i = 0; i < N; i++) {
- cin >> A.at(i);
- }
- for (int i = 0; i < N; i++) {
- cin >> B.at(i);
- }
- for (int i = 0; i < N; i++) {
- cin >> C.at(i);
- }
- // プレゼントの予算を出力
- // テストの点数を表す配列から合計点を計算
- int sum_a = 0;
- for (int i = 0; i < A.size(); i++) {
- sum_a += A.at(i);
- }
- int sum_b = 0;
- for (int i = 0; i < B.size(); i++) {
- sum_b += B.at(i);
- }
- int sum_c = 0;
- for (int i = 0; i < C.size(); i++) {
- sum_c += C.at(i);
- }
- // 3人の合計点からプレゼントの予算を計算して出力する
- cout << sum_a * sum_b * sum_c << endl;
- }
#include <bits/stdc++.h> using namespace std; int main() { // 科目の数Nを受け取る int N; cin >> N; // それぞれのテストの点数を受け取る // N要素の配列A,B,Cを宣言 vector<int> A(N), B(N), C(N); // N個の入力をそれぞれ受け取る for (int i = 0; i < N; i++) { cin >> A.at(i); } for (int i = 0; i < N; i++) { cin >> B.at(i); } for (int i = 0; i < N; i++) { cin >> C.at(i); } // プレゼントの予算を出力 // テストの点数を表す配列から合計点を計算 int sum_a = 0; for (int i = 0; i < A.size(); i++) { sum_a += A.at(i); } int sum_b = 0; for (int i = 0; i < B.size(); i++) { sum_b += B.at(i); } int sum_c = 0; for (int i = 0; i < C.size(); i++) { sum_c += C.at(i); } // 3人の合計点からプレゼントの予算を計算して出力する cout << sum_a * sum_b * sum_c << endl; }
ヒント3
output関数の部分のみ答えを示します。これを参考にsum関数を完成させてください。
クリックでヒントプログラムを見る
- #include <bits/stdc++.h>
- using namespace std;
- // 1人のテストの点数を表す配列から合計点を計算して返す関数
- // 引数 scores: scores.at(i)にi番目のテストの点数が入っている
- // 返り値: 1人のテストの合計点
- int sum(vector<int> scores) {
- // ここにプログラムを追記
- }
- // 3人の合計点からプレゼントの予算を計算して出力する関数
- // 引数 sum_a: A君のテストの合計点
- // 引数 sum_b: B君のテストの合計点
- // 引数 sum_c: C君のテストの合計点
- // 返り値: なし
- void output(int sum_a, int sum_b, int sum_c) {
- cout << sum_a * sum_b * sum_c << endl;
- }
- // -------------------
- // ここから先は変更しない
- // -------------------
- // N個の入力を受け取って配列に入れて返す関数
- // 引数 N: 入力を受け取る個数
- // 返り値: 受け取ったN個の入力の配列
- vector<int> input(int N) {
- vector<int> vec(N);
- for (int i = 0; i < N; i++) {
- cin >> vec.at(i);
- }
- return vec;
- }
- int main() {
- // 科目の数Nを受け取る
- int N;
- cin >> N;
- // それぞれのテストの点数を受け取る
- vector<int> A = input(N);
- vector<int> B = input(N);
- vector<int> C = input(N);
- // それぞれの合計点を計算
- int sum_A = sum(A);
- int sum_B = sum(B);
- int sum_C = sum(C);
- // プレゼントの予算を出力
- output(sum_A, sum_B, sum_C);
- }
#include <bits/stdc++.h> using namespace std; // 1人のテストの点数を表す配列から合計点を計算して返す関数 // 引数 scores: scores.at(i)にi番目のテストの点数が入っている // 返り値: 1人のテストの合計点 int sum(vector<int> scores) { // ここにプログラムを追記 } // 3人の合計点からプレゼントの予算を計算して出力する関数 // 引数 sum_a: A君のテストの合計点 // 引数 sum_b: B君のテストの合計点 // 引数 sum_c: C君のテストの合計点 // 返り値: なし void output(int sum_a, int sum_b, int sum_c) { cout << sum_a * sum_b * sum_c << endl; } // ------------------- // ここから先は変更しない // ------------------- // N個の入力を受け取って配列に入れて返す関数 // 引数 N: 入力を受け取る個数 // 返り値: 受け取ったN個の入力の配列 vector<int> input(int N) { vector<int> vec(N); for (int i = 0; i < N; i++) { cin >> vec.at(i); } return vec; } int main() { // 科目の数Nを受け取る int N; cin >> N; // それぞれのテストの点数を受け取る vector<int> A = input(N); vector<int> B = input(N); vector<int> C = input(N); // それぞれの合計点を計算 int sum_A = sum(A); int sum_B = sum(B); int sum_C = sum(C); // プレゼントの予算を出力 output(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
解答例
必ず自分で問題に挑戦してみてから見てください。
クリックで解答例を見る
- #include <bits/stdc++.h>
- using namespace std;
- // 1人のテストの点数を表す配列から合計点を計算して返す関数
- // 引数 scores: scores.at(i)にi番目のテストの点数が入っている
- // 返り値: 1人のテストの合計点
- int sum(vector<int> scores) {
- int s = 0;
- for (int i = 0; i < scores.size(); i++) {
- s += scores.at(i);
- }
- return s;
- }
- // 3人の合計点からプレゼントの予算を計算して出力する関数
- // 引数 sum_a: A君のテストの合計点
- // 引数 sum_b: B君のテストの合計点
- // 引数 sum_c: C君のテストの合計点
- // 返り値: なし
- void output(int sum_a, int sum_b, int sum_c) {
- cout << sum_a * sum_b * sum_c << endl;
- }
- // -------------------
- // ここから先は変更しない
- // -------------------
- // N個の入力を受け取って配列に入れて返す関数
- // 引数 N: 入力を受け取る個数
- // 返り値: 受け取ったN個の入力の配列
- vector<int> input(int N) {
- vector<int> vec(N);
- for (int i = 0; i < N; i++) {
- cin >> vec.at(i);
- }
- return vec;
- }
- int main() {
- // 科目の数Nを受け取る
- int N;
- cin >> N;
- // それぞれのテストの点数を受け取る
- vector<int> A = input(N);
- vector<int> B = input(N);
- vector<int> C = input(N);
- // それぞれの合計点を計算
- int sum_A = sum(A);
- int sum_B = sum(B);
- int sum_C = sum(C);
- // プレゼントの予算を出力
- output(sum_A, sum_B, sum_C);
- }
#include <bits/stdc++.h> using namespace std; // 1人のテストの点数を表す配列から合計点を計算して返す関数 // 引数 scores: scores.at(i)にi番目のテストの点数が入っている // 返り値: 1人のテストの合計点 int sum(vector<int> scores) { int s = 0; for (int i = 0; i < scores.size(); i++) { s += scores.at(i); } return s; } // 3人の合計点からプレゼントの予算を計算して出力する関数 // 引数 sum_a: A君のテストの合計点 // 引数 sum_b: B君のテストの合計点 // 引数 sum_c: C君のテストの合計点 // 返り値: なし void output(int sum_a, int sum_b, int sum_c) { cout << sum_a * sum_b * sum_c << endl; } // ------------------- // ここから先は変更しない // ------------------- // N個の入力を受け取って配列に入れて返す関数 // 引数 N: 入力を受け取る個数 // 返り値: 受け取ったN個の入力の配列 vector<int> input(int N) { vector<int> vec(N); for (int i = 0; i < N; i++) { cin >> vec.at(i); } return vec; } int main() { // 科目の数Nを受け取る int N; cin >> N; // それぞれのテストの点数を受け取る vector<int> A = input(N); vector<int> B = input(N); vector<int> C = input(N); // それぞれの合計点を計算 int sum_A = sum(A); int sum_B = sum(B); int sum_C = sum(C); // プレゼントの予算を出力 output(sum_A, sum_B, sum_C); }