足跡-sokuseki-

りかの日進月歩の記録

AOJ1346 Miscalculation

Miscalculation | Aizu Online Judge

問題概要

1行目に0~9の数字, +, *の文字からなる数式が与えられます。この数式は奇数文字目は数字、偶数文字目は演算子(+または*)です。数式の長さは奇数で、最大17文字です。
数式の計算方法は

  1. 乗算(*)を加算(+)より優先して計算する
  2. 演算子の優先順位を考えずに左から右に計算する

の2通りあります。

2行目に 10^9未満の非負整数が与えられます。2行目の整数が、1行目の数式をどのような方法で計算したものかが知りたいです。
(1)の方法で計算したものであるなら'M'、(2)の方法で計算したものであるなら'L'、(1)と(2)どちらで計算しても2行目の整数になるなら'U'、(1)と(2)のどちらで計算しても2行目の整数にならないなら'I'と答えてください。

解法

1行目を2通りの方法で計算します。その結果と2行目の整数を比較します。
構文解析のアレを初めて実装しました。
AIZU ONLINE JUDGE: Code Review