func main() var s: []char :: cui@input() var lastOp: char :: '*' var num: int :: 0 var ans: int :: 0 for i(0, ^s) ; 太郎君の国では足し算と掛け算の記号が普通と逆なので注意。 if(i = ^s | s[i] = '*' | s[i] = '+') if(lastOp = '*') do ans :+ num else do ans :* num end if if(ans > 10000) ; 「計算結果の値が、10,000を超えることはありません。」と書かれているので、計算途中でオーバーフローしたら0を答えにします。 ; 「10000000000000000000+0*1」などの入力があり得ます。 ; 途中でオーバーフローしないようにansの値を小さくする必要があります。 do ans :: 0 end if if(i <> ^s) do lastOp :: s[i] do num :: 0 end if else do num :* 10 do num :+ [s[i]].toInt(&) if(num > 10000) do num :: 0 end if end if end for do cui@print("\{ans}\n") end func