EX11 - 電卓をつくろう2 / 1.11 /

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_i0の場合は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;
  }

  cout << 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

解答例

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