Time Limit: 2 sec / Memory Limit: 256 MB
問題文
電卓の操作が与えられるので、計算途中の値と計算結果の値を出力してください。
電卓の操作は次の形式で入力されます。
入力の形式
計算の数N 最初の値A 演算子op_1 計算する値B_1 演算子op_2 計算する値B_2 \vdots 演算子op_N 計算する値B_N
次の入力は((2 + 1) × 3) ÷ 2を表しています。
入力例
3 2 + 1 * 3 / 2
出力では「何行目の出力か」と、「計算途中の値」を出力してください。
出力の形式
1:1個目の計算結果 2:2個目の計算結果 \vdots N:N個目の計算結果
次の出力は上の入力例に対する出力です。
出力例
1:3 2:9 3:4
与えられる計算式のパターンと対応する出力は以下の表の通りです。
入力 | 出力 | 備考 |
---|---|---|
+ B | + Bの計算結果を出力する。 | |
- B | - Bの計算結果を出力する。 | |
* B | × Bの計算結果を出力する。 | |
/ B | ÷ Bの計算結果を出力する。 | 小数点以下は切り捨てて出力する。 Bが0の場合はerror と出力し、それ以降は出力を行わない。 |
÷ Bにおいて、Bが0の場合はerror
と出力し、それ以降は出力を行わない ことに注意してください。
ページ末尾に問題のヒントがあります。詰まったら見てみましょう。
サンプルプログラム
#include <bits/stdc++.h> using namespace std; int main() { int N, A; cin >> N >> A; // ここにプログラムを追記 }
制約
- 0≦N≦7
- 0≦A, B_i≦10
- A, B_i, Nは整数
- op_iは+, -, *, / のいずれか一つ
入力
入力は次の形式で標準入力から与えられます。
N A op_1 B_1 op_2 B_2 \vdots op_N B_N
出力
1:1個目の計算結果 2:2個目の計算結果 \vdots N:N個目の計算結果
出力の最後には改行が必要です。
ジャッジでは以下の入力例以外のケースに関してもテストされることに注意。
入力例1
3 2 + 1 * 3 / 2
出力例1
1:3 2:9 3:4
問題文中で説明した入出力です。
入力例2
2 3 / 2 / 2
出力例2
1:1 2:0
割り算では小数点以下を切り捨てます。
入力例3
4 3 + 1 / 0 * 2 - 10
出力例3
1:4 error
割り算でB_iが0の場合はerror
と出力し、それ以降は出力をしないことに注意してください。
入力例4
7 10 * 10 * 10 * 10 * 10 * 10 * 10 * 10
出力例4
1:100 2:1000 3:10000 4:100000 5:1000000 6:10000000 7:100000000
ヒント1
次のプログラムは、5つの整数を入力で一つずつ受け取り、受け取った整数を足して出力します。
また、今回の問題と同様に、出力が何行目かも同時に出力します。
今回の問題を解く際の参考にしてください。
#include <bits/stdc++.h> using namespace std; int main() { int sum = 0; for (int i = 0; i < 5; i++) { int x; cin >> x; sum += x; cout << i + 1 << ":" << sum << endl; } }
ヒント入力
3 4 2 1 10
ヒント出力
1:3 2:7 3:9 4:10 5:20
ヒント2
ジャッジでテストされる入力のうち2つをヒントとして示します。
サンプルは全てあっていてWAの原因がわからない人は、以下のケースに正解しているか確かめてみましょう。
テスト入力1
7 0 - 5 * 7 / 4 + 0 + 0 - 10 * 5
テスト出力1
1:-5 2:-35 3:-8 4:-8 5:-8 6:-18 7:-90
テスト入力2
6 0 / 4 / 3 / 5 + 3 / 7 / 1
テスト出力2
1:0 2:0 3:0 4:3 5:0 6:0
テスト入出力
書いたプログラムがACにならず、原因がどうしてもわからないときだけ見てください。
クリックでテスト入出力を見る
テスト入力1
7 0 - 5 * 7 / 4 + 0 + 0 - 10 * 5
テスト出力1
1:-5 2:-35 3:-8 4:-8 5:-8 6:-18 7:-90
テスト入力2
6 0 / 4 / 3 / 5 + 3 / 7 / 1
テスト出力2
1:0 2:0 3:0 4:3 5:0 6:0
テスト入力3
3 1 * 4 * 3 / 0
テスト出力3
1:4 2:12 error
テスト入力4
7 0 * 2 / 0 + 1 / 0 + 5 * 2 - 10
テスト出力4
1:0 error
解答例
必ず自分で問題に挑戦してみてから見てください。
クリックで解答例を見る
#include <bits/stdc++.h> using namespace std; int main() { int N, A; cin >> N >> A; for (int i = 0; i < N; i++) { int x; string op; cin >> op >> x; if (op == "+") { A += x; } else if (op == "-") { A -= x; } else if (op == "*") { A *= x; } else if (op == "/" && x != 0) { A /= x; } else { cout << "error" << endl; break; } cout << i + 1 << ":" << A << endl; } }