func main() var s: []char :: cui@input() var lastOp: char :: '*' var num: int :: 0 var ans: int :: 0 try 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) throw 1 break i end if if(i <> ^s) do lastOp :: s[i] do num :: 0 end if else do num :* 10 if(num > 10000) throw 1 end if do num :+ [s[i]].toInt(&) end if end for catch ; 「計算結果の値が、10,000を超えることはありません。」と書かれているので、計算途中でオーバーフローしたら0を答えにします。 ; 「10000000000000000000+0」などの入力があり得るので。 do ans :: 0 end try do cui@print("\{ans}\n") end func