#agc039c. [agc039_c]Division by Two with Something

[agc039_c]Division by Two with Something

题目描述

给定整数NNXX。对于00XX(包括XX)之间的每个整数kk,找出以下问题的答案,然后计算所有这些答案的和,模998244353998244353

  • 让我们在整数kk上重复以下操作。操作:如果kk当前是奇数,则从中减11并将其除以22;否则,将其除以22并加上2N12^{N-1}。需要执行多少次操作才能让kk返回到其原始值?(如果kk永远不返回到其原始值,则答案视为00。)

约束条件

  • 1N2×1051 \leq N \leq 2\times 10^5
  • 0X<2N0 \leq X < 2^N
  • XX用二进制表示,并且恰好有NN位。(如果XX的位数少于NN位,则在前面补零。)
  • 输入中的所有值都是整数。

输入

输入通过标准输入给出,格式如下:

NN XX

输出

打印问题的答案的和,对998244353998244353取模。

示例输入 1

3
111

示例输出 1

40

例如,对于k=3k=3,操作会将kk更改如下:1,0,4,6,7,31,0,4,6,7,3。因此,k=3k=3的答案为66

示例输入 2

6
110101

示例输出 2

616

示例输入 3

30
001110011011011101010111011100

示例输出 3

549320998