Codeforces Round 515 (Div. 3) |
---|
Закончено |
Задано два длинных двоичных натуральных числа $$$a$$$ и $$$b$$$ длин $$$n$$$ и $$$m$$$ соответственно. Вы собираетесь повторять следующий процесс: если $$$b > 0$$$, тогда добавить к ответу значение $$$a~ \&~ b$$$ и поделить $$$b$$$ на $$$2$$$ с округлением вниз (то есть удалить последнюю цифру $$$b$$$) и продолжить процесс, иначе прекратить процесс.
Значение $$$a~ \&~ b$$$ означает побитовый AND $$$a$$$ и $$$b$$$. Ваша задача — посчитать ответ по модулю $$$998244353$$$.
Заметим, что вам необходимо добавлять значение $$$a~ \&~ b$$$ к ответу в десятичном представлении, не в двоичном. Таким образом, ваша задача заключается в том, чтобы посчитать ответ в десятичном представлении. Например, если $$$a = 1010_2~ (10_{10})$$$ и $$$b = 1000_2~ (8_{10})$$$, тогда значение $$$a~ \&~ b$$$ будет равно $$$8$$$, а не $$$1000$$$.
Первая строка входных данных содержит два целых числа $$$n$$$ и $$$m$$$ ($$$1 \le n, m \le 2 \cdot 10^5$$$) — длина $$$a$$$ и длина $$$b$$$ соответственно.
Вторая строка входных данных содержит одно длинное число $$$a$$$. Гарантируется, что это число состоит ровно из $$$n$$$ нулей и единиц, а первая цифра всегда равна $$$1$$$.
Третья строка входных данных содержит одно длинное число $$$b$$$. Гарантируется, что это число состоит ровно из $$$m$$$ нулей и единиц, а первая цифра всегда равна $$$1$$$.
Выведите ответ в десятичном представлении по модулю $$$998244353$$$.
4 4
1010
1101
12
4 5
1001
10101
11
Алгоритм для первого тестового примера:
Таким образом, ответ равен $$$8 + 2 + 2 + 0 = 12$$$.
Алгоритм для второго тестового примера:
Таким образом, ответ равен $$$1 + 8 + 1 + 0 + 1 = 11$$$.
Название |
---|