AOJ1346 Miscalculation
Miscalculation | Aizu Online Judge
問題概要
1行目に0~9の数字, +, *の文字からなる数式が与えられます。この数式は奇数文字目は数字、偶数文字目は演算子(+または*)です。数式の長さは奇数で、最大17文字です。
数式の計算方法は
- 乗算(*)を加算(+)より優先して計算する
- 演算子の優先順位を考えずに左から右に計算する
の2通りあります。
2行目に未満の非負整数が与えられます。2行目の整数が、1行目の数式をどのような方法で計算したものかが知りたいです。
(1)の方法で計算したものであるなら'M'、(2)の方法で計算したものであるなら'L'、(1)と(2)どちらで計算しても2行目の整数になるなら'U'、(1)と(2)のどちらで計算しても2行目の整数にならないなら'I'と答えてください。
解法
1行目を2通りの方法で計算します。その結果と2行目の整数を比較します。
構文解析のアレを初めて実装しました。
AIZU ONLINE JUDGE: Code Review