CF1066E Binary Numbers AND Sum

题目描述

给定两个巨大的二进制整数 $a$ 和 $b$,长度分别为 $n$ 和 $m$。你将重复以下过程:如果 $b > 0$,则将 $a~ \&~ b$ 的值加到答案中,并将 $b$ 除以 $2$ 并向下取整(即删除 $b$ 的最后一位数字),然后重复该过程;否则停止过程。 值 $a~ \&~ b$ 表示 $a$ 和 $b$ 的按位与运算。你的任务是计算答案并对 $998244353$ 取模。 注意,你应该将 $a~ \&~ b$ 的值以十进制表示法(而非二进制)加到答案中。因此,你的任务是以十进制表示法计算答案。例如,如果 $a = 1010_2~ (10_{10})$ 且 $b = 1000_2~ (8_{10})$,那么 $a~ \&~ b$ 的值将等于 $8$,而不是 $1000$。

输入格式

第一行,两个整数 $n,m(1≤n,m≤2 \times 10^5)$。 第一行,一个长度为 $n$ 的二进制数 $a$。 第一行,一个长度为 $m$ 的二进制数 $b$。

输出格式

一行,一个数,表示答案。

说明/提示

The algorithm for the first example: 1. add to the answer $ 1010_2~ \&~ 1101_2 = 1000_2 = 8_{10} $ and set $ b := 110 $ ; 2. add to the answer $ 1010_2~ \&~ 110_2 = 10_2 = 2_{10} $ and set $ b := 11 $ ; 3. add to the answer $ 1010_2~ \&~ 11_2 = 10_2 = 2_{10} $ and set $ b := 1 $ ; 4. add to the answer $ 1010_2~ \&~ 1_2 = 0_2 = 0_{10} $ and set $ b := 0 $ . So the answer is $ 8 + 2 + 2 + 0 = 12 $ . The algorithm for the second example: 1. add to the answer $ 1001_2~ \&~ 10101_2 = 1_2 = 1_{10} $ and set $ b := 1010 $ ; 2. add to the answer $ 1001_2~ \&~ 1010_2 = 1000_2 = 8_{10} $ and set $ b := 101 $ ; 3. add to the answer $ 1001_2~ \&~ 101_2 = 1_2 = 1_{10} $ and set $ b := 10 $ ; 4. add to the answer $ 1001_2~ \&~ 10_2 = 0_2 = 0_{10} $ and set $ b := 1 $ ; 5. add to the answer $ 1001_2~ \&~ 1_2 = 1_2 = 1_{10} $ and set $ b := 0 $ . So the answer is $ 1 + 8 + 1 + 0 + 1 = 11 $ .