#SC2024SD3T10. 二进制串的扩散

二进制串的扩散

题目描述

对于每一个二进制串,将以下操作所形成的串称为这个二进制串的 一次扩散

  • 在原串的每两个相邻元素之间加入一个 00 或者 11

例如,1001011100101111010011101001 都是 10011001 的一个 一次扩散,但是 10110111011011 不是。

我们称一个二进制串是 完美的,当且仅当:

  • 长度为奇数。
  • 对于每一个下标为奇数的字符,这个字符一定是以它为结尾的前缀中出现次数较多的那个字符。

例如 10010111001011,就是一个 完美的二进制串

现在给你一个长度为 nn 的二进制串,你需要求出:

所有非空前缀的 一次扩散 中,完美的二进制串 的个数。个数可能很多,你需要把个数对 998244353998244353 取模。

输入格式

第一行为 n(1n2×105)n(1\le n\le 2\times 10^5)

第二行一个长度为 nn0101 串。

输出格式

输出个数对 998244353998244353 取模的结果。

3
010
3
9
101101111
21
37
1011011111011010000011011111111011111
365

提示

对于第 44 组样例,010 的前缀的满足题目要求的一次扩散:

  • 00
  • 01011
  • 01001100

总共 33 个。

数据范围

对于 30%30\% 的数据,n10n\le 10

对于 60%60\% 的数据,n100n\le 100

对于 100%100\% 的数据,n2×105n\le 2\times 10^5