博士 : ピーター君、ついにやったよ。
ピーター : またですか。今度はどんなくだらない発明ですか。
博士 : ついに数式を計算機で処理する画期的な方法を思いついたんだ。この表をみてごらん。
通常の記法 | 博士の「画期的な」記法 |
1 + 2 | 1 2 + |
3 * 4 + 7 | 3 4 * 7 + |
10 / ( 2 - 12 ) | 10 2 12 - / |
( 3 - 4 ) * ( 7 + 2 * 3 ) | 3 4 - 7 2 3 * + * |
ピーター : はぁ。
博士 : ふっふっふ。これだけでは、未熟者の君には何のことだかわからないだろうねえ。ここからが肝心なんじゃ。
ピーター : っていうか・・・。
博士 : 計算機にはスタックというデータ構造があることは君も知っているね。ほれ、「先入れ後出し」のあれじゃよ。
ピーター : はい。知ってますが、あの・・・。
博士 : この画期的な記法はあのスタックを使うんじゃ。例えばこの 10 2 12 - / だが、次のように処理する。
処理対象 | 10 | 2 | 12 | - | / | |||||||||||||||
↓ | ↓ | ↓ | ↓2-12 | ↓10/-10 | ||||||||||||||||
スタック |
|
|
|
|
| |||||||||||||||
博士 : どうじゃな。括弧も演算子の優先順位も気にする必要がないじゃろう?語順も「10 を 2 から 12 を引いたもので割る。」となり、何となく彼の極東の島国の言葉、日本語と似ておるじゃろうて。 この画期的な発明さえあれば、我が研究室は安泰じゃて。ファファファ。
ピーター : っていうか博士。これって日本にいたとき会津大学の基礎コースで習いましたよ。「逆ポーランド記法」とかいって、みんな簡単にプログラムしてました。
博士 : ・・・。
ということで、ピーター君に変わって博士に、このプログラムを教える事になりました。「逆ポーランド記法」で書かれた数式を入力とし、計算結果を出力するプログラムを作成してください。
複数のデータセットが与えられます。各データセットでは、逆ポーランド記法による数式(整数と演算記号が空白文字1文字(半角)で区切られた80文字以内の文字列)が 1 行に与えられます。 ある値を 0 や 0 に限りなく近い値で割るような数式は与えられません。
データセットの数は 50 を超えません。
各データセットごとに、計算結果(実数)を1行に出力してください。なお、計算結果は 0.00001 以下の誤差を含んでもよい。
10 2 12 - / 3 4 - 7 2 3 * + * -1 -2 3 + +
-1.000000 -13.000000 0.000000