問題一覧 > 通常問題

No.2219 Re:010

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 130
作問者 : stoqstoq / テスター : KazunKazun ShirotsumeShirotsume
2 ProblemId : 7698 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2023-02-05 19:42:20

問題文

'0' と'1' のみから成る文字列 $X$ に対し、 $f(X)$ を $X$ に部分列(連続でなくてもよい) として含まれる $\mathsf {010}$ の個数と定めます。
ただし部分列は取り出した位置で区別します。

'0', '1', '?' のみから成る文字列 $S$ が与えられます。

$S$ の全ての '?' を '0' または '1' に置き換え、文字列 $S'$ を作ります。
このような $S'$ は $S$ に含まれる'?' の個数を $c$ として $2^c$ 通りありますが、それらすべてに対する $f(S')$ の総和を求めてください。

答えは非常に大きくなることがあるので、$998244353$ で割った余りを出力してください。

入力

$S$

  • $S$ は '0', '1', '?' のみから成る文字列
  • $1 \leq |S| \leq 2 \times 10^5$

出力

考え得る $S'$ 全てに対する $f(S')$ の総和を $998244353$ で割った余りを出力してください。

サンプル

サンプル1
入力
01?0
出力
4

$S'$ としてあり得るものは $\mathsf {0100,\ 0110}$ です。

$f(\mathsf {0100})+f(\mathsf {0110})=2+2=4$ です。

サンプル2
入力
0
出力
0

'?' が1つも含まれない場合や、解が $0$ になる場合もあります。

サンプル3
入力
??????????
出力
15360

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。