問題
逆ポーランド表記法(後述記法)で表現されている式ABCDー×+において、A=16, B=8, C=4, D=2のときの演算結果はどれか。逆ポーランド表記法による式AB+は、中置記法による式A+Bと同一である。
ア 32
イ 46
ウ 48
エ 94
解説
逆ポーランド表記法(ぎゃくポーランドきほう、英語: Reverse Polish Notation, RPN)は、数式やプログラムの記法の一種です。演算子を被演算子の後にすることから、後置記法とも言います。
逆ポーランド表記法では、演算子を被演算子の後に置くことで、括弧を使用せずに演算子の優先順位を明確にすることができます。そのため、コンピュータで計算を行う際には、逆ポーランド表記法がよく使われます。
逆ポーランド表記法の例を以下に示します。
中置記法 | 逆ポーランド表記法
------- | --------
1 + 2 | 1 2 +
(1 + 2) * 3 | 1 2 + 3 *
逆ポーランド表記法の計算方法は、以下のとおりです。
- 式を前から順番に読み、被演算子をスタックに積んでいきます。
- 演算子を読んだら、スタックから被演算子を取り出して演算を行い、その結果をスタックに積みます。
- 式の最後まで読み終わったら、スタックから結果を取り出して出力します。
例えば、逆ポーランド表記法の式「1 2 + 3 *」を計算すると、以下のようになります。
- 1をスタックに積む。
- 2をスタックに積む。
- 「+」を読み、スタックから1と2を取り出して演算を行う。
- 3をスタックに積む。
- 「*」を読み、スタックから3と演算結果を取り出して演算を行う。
- スタックから結果を取り出して出力する。
結果は、7となります。
逆ポーランド表記法には、以下のメリットがあります。
- 括弧を使用せずに演算子の優先順位を明確にできる
- 計算機で計算を行う際には、スタックを使用した計算方法を採用できるため、計算手順が簡易で処理が行いやすい
逆ポーランド表記法は、コンピュータで計算を行う際には、非常に便利な記法です。
というわけで、今回の問題「ABCDー×+」を解いてみましょう。
- A=16をスタックに積む。
- B=8をスタックに積む。
- C=4をスタックに積む。
- D=2をスタックに積む。
- 「ー」を読み、スタックから4と2を取り出して演算を行う。
- 2をスタックに積む。
- 「×」を読み、スタックから8と2を取り出して演算を行う。
- 16をスタックに積む。
- 「+」を読み、スタックから16と16を取り出して演算を行う。
- スタックから結果を取り出して出力する。
結果は、32となるので、正解は「ア」です。