問題一覧 > 通常問題

No.3500 01 String

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 1024 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 78
作問者 : rhoo / テスター : Naru820 Nzt3 Solalyth
ProblemId : 13158 / CPCTF 2026: PPC (順位表) / 自分の提出
問題文最終更新日: 2026-04-14 14:57:40
CPCTF 2026: PPCの他の問題:

問題文

traP にはデジタル創作初心者向けに 0→1 講習会というものがあります。

長さ $N$ の $0$ と $1$ からなる文字列 $A$ が与えられます。文字列の $i$ 番目 ($1 \le i \le N$) の要素を $A_i$ と表します。
この文字列に対する、次の操作を考えます。

  • $1 \le i \le N$ を満たす整数 $i$ を選ぶ。
  • $A_i = 0$ かつ $i < N$ なら、$A_{i+1}$ を $0$ にする。
  • $A_i = 1$ かつ $i > 1$ なら、$A_{i-1}$ を $1$ にする。

文字列 $A$ からこの操作を $0$ 回以上行うことで作ることができる文字列の個数を $998244353$ で割ったあまりを出力してください。

制約

  • $1 \le N \le 5 \times 10^5$
  • $A$ は長さ $N$ の $0,1$ のみからなる文字列

入力

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

$N$
$A$

出力

求める個数を $998244353$ で割ったあまりを 1 行で出力してください。

サンプル

サンプル1
入力
2
01
出力
3

到達可能な文字列は 01, 00, 11 の 3 通りです。

サンプル2
入力
4
1111
出力
1

どの位置を選んでも文字列は変化しないため、到達可能な文字列は 1111 の 1 通りです。

サンプル3
入力
42
010100101010101010110101000101101100101001
出力
211079167

$998244353$ で割ったあまりを出力してください。

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