Time Limit: 2 sec / Memory Limit: 1024 MB
問題文
電卓の操作が与えられるので、計算途中の値と計算結果の値を出力してください。
電卓の操作は次の形式で入力されます。
入力の形式
計算の数N 最初の値A 演算子\mathrm{op}_1 計算する値B_1 演算子\mathrm{op}_2 計算する値B_2 \vdots 演算子\mathrm{op}_N 計算する値B_N
次の入力は ((2 + 1) \times 3) \div 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
と出力し、それ以降は出力を行わない ことに注意してください。
ページ末尾に問題のヒントがあります。詰まったら見てみましょう。
サンプルプログラム
N = int(input()) A = int(input()) # ここにプログラムを追記
制約
- 1 \le N \le 7
- 0 \le A, B_i \le 10
- A, B_i, N は整数
- \mathrm{op}_i は
+
,-
,*
,/
のいずれか
入力
入力は次の形式で標準入力から与えられます。
N A \mathrm{op}_1 B_1 \mathrm{op}_2 B_2 \vdots \mathrm{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つの整数を入力で一つずつ受け取り、受け取った整数を足して出力します。
また、今回の問題と同様に、出力が何行目かも同時に出力します。
今回の問題を解く際の参考にしてください。
クリックでヒントプログラムを見る
total = 0 for i in range(5): x = int(input()) total += x # 行番号 合計値 の形式で出力 print(i + 1, total)
ヒント入力
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 -9 4 -9 5 -9 6 -19 7 -95
テスト入力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 -9 4 -9 5 -9 6 -19 7 -95
テスト入力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
解答例
必ず自分で問題に挑戦してみてから見てください。
クリックで解答例を見る
N = int(input()) A = int(input()) for i in range(N): op, x = input().split() x = int(x) if op == "+": A += x elif op == "-": A -= x elif op == "*": A *= x elif op == "/" and x != 0: A //= x else: print("error") break print(i + 1, A)