Олимпиадный тренинг

Задача . E. Вася и длинные числа


У Васи есть три длинных числа — \(a, l, r\). Назовем разбиением длинного числа \(x\) такую последовательность строк \(s_1, s_2, \dots, s_k\), что \(s_1 + s_2 + \dots + s_k = x\), где \(+\) означает конкатенацию строк. При этом \(s_i\) называется \(i\)-м элементом разбиения. Например, для числа \(12345\) существуют следующие разбиения: ["1", "2", "3", "4", "5"], ["123", "4", "5"], ["1", "2345"], ["12345"] и многие другие.

Назовем разбиение числа \(a\) хорошим, если каждый его элемент не содержит лидирующих нулей.

Вася хочет знать количество хороших разбиений числа \(a\), где каждый элемент разбиения \(s_i\) будет удовлетворять условию \(l \le s_i \le r\). Обратите внимание, что сравнение происходит по правилам сравнения целых чисел, а не сравнения строк.

Помогите Васе! Сообщите ему количество разбиений числа \(a\), удовлетворяющих описанным выше условиям. Полученное число может быть достаточно велико, поэтому выведите его по модулю \(998244353\).

Входные данные

В первой строке содержится целое число \(a~(1 \le a \le 10^{1000000})\).

Во второй строке содержится целое число \(l~(0 \le l \le 10^{1000000})\).

В третьей строке содержится целое число \(r~(0 \le r \le 10^{1000000})\).

Гарантируется, что \(l \le r\).

Так же гарантируется, что числа \(a, l, r\) не содержат лидирующих нулей.

Выходные данные

Выведите одно целое число — количество разбиений числа \(a\), удовлетворяющих описанным выше условиям, по модулю \(998244353\).

Примечание

В первом тестовом примере существует два хороших разбиения \(13+5\) и \(1+3+5\).

Во втором тестовом примере существует одно хорошее разбиение \(1+0+0+0+0\).


Примеры
Входные данныеВыходные данные
1 135
1
15
2
2 10000
0
9
1

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя