#P13019. [AGC039C] Division by Two with Something

    ID: 12203 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 8 上传者: 标签>CF2400数学组合数学字符串数论枚举模运算莫比乌斯反演

[AGC039C] Division by Two with Something

题目描述

现在给你一个整数NN和一个二进制数XX,对0X0 \sim X之间的每个整数KK在返回到其原始值之前,需要执行多少次下面的操作:

如果KK是奇数

K=(K1)÷2K=(K-1) \div 2

如果KK是偶数

K=(K÷2)+2N1K=(K \div 2)+2^{N-1}

KK 不可能返回原始值不计入操作次数。

输入格式

第一行输入一个整数NN,第二行输入一个NN位的整数XX

输出格式

一个整数,表示0X0 \sim X之间的每个整数KK在返回到其原始值之前,需要执行的操作次数的总和。

由于答案可能过大,请对最终答案mod 998244353mod \text{ 998244353}

输入输出样例 #1

输入 #1

3
111

输出 #1

40

输入输出样例 #2

输入 #2

6
110101

输出 #2

616

输入输出样例 #3

输入 #3

30
001110011011011101010111011100

输出 #3

549320998

说明/提示

  • 1N2×1051 \le N \le 2 \times10^5
  • 0X<2N0 \le X < 2^N
  • XX是一个长度为NN的二进制数(XX的数位不足NN时用前导00补齐)
  • 所有数字都是整数

例如,K=3K = 3时,操作为:1,0,4,6,7,3,所以K=3K=3时答案是66