NAPC 2025 OPEN 2026/03/27 09:00 ~ 2026/03/27 14:15 5:15:00.000

B Strong Shift

問題
制限時間: 2 sec メモリ制限: 2048 MB
problem
ストーリー

shogo314君は加算よりもシフト演算の優先度が低いことを知らずに実装してしまい、不正解となってしまいました。 全能なshogo314君は実装を直さずに正解しようと思い、 左シフト演算の優先度を加算よりも強くし、かつ左シフト演算は右結合であるように世界を作り変えました。 さて、世界が作り変わる前の式はどのように評価されるでしょうか。

問題文

以下のBNF における<expr>に従う文字列 $F$ が与えられます。 $F$を式として評価した値を $998244353$ で割ったあまりを求めてください。

<expr>         ::= <term> | <expr> "+" <term>

<term>         ::= <primary> | <primary> "<<" <term>

<primary>      ::= <posint> | "(" <expr> ")"

<posint>       ::= <nonzero-digit> | <nonzero-digit> <digits>

<digits>       ::= <digit> | <digits> <digit>

<digit>        ::= "0" | <nonzero-digit>

<nonzero-digit>::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

ここで、 << は左シフトを表す二項演算子であり、 a<<b は $a\times 2^b$ と評価されます。 また、+は加算を表す二項演算子です。 さらに、 ()で囲われた部分は先に計算されます。

この問題において、<<は右結合であることに注意してください。

制約
  • $1\leq |F|\leq 2\times 10^5$
  • $F$ は上記のBNFの <expr> に従う
入力

入力は以下の形式で標準入力から与えられます。

$F$
出力

$F$を式として評価したときの値を $998244353$ で割ったあまりを出力してください。

入力例 1
1<<2<<3+1
出力例 1
65537

(1<<(2<<3))+1 を式として評価した値と同じ値になります。

入力例 2
(((((((((((((((998244353)))))))))))))))
出力例 2
0

答えを $998244353$ で割ったあまりを出力することを忘れないでください。

入力例 3
456<<123<<789+(987<<321)<<654
出力例 3
542711207