#agc039c. [agc039_c]Division by Two with Something

[agc039_c]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}

输入格式

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

输出格式

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

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

说明/提示

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

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