問題一覧 > 通常問題

No.2219 Re:010

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

問題文

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

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

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

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

入力

SS

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

出力

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

サンプル

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

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

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

サンプル2
入力
0
出力
0

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

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

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