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

Задача . D. Foreigner


Задача

Темы: дп *2800

Путешествуя по миру, вы заметили интересную вещь: владельцы всех магазинов, понимая, что вы иностранец, завышают все цены до абсолютно неадекватных чисел.

Неадекватные числа определяются так:

  • все числа от \(1\) до \(9\) являются неадекватными;
  • чтобы число \(x \ge 10\) являлось неадекватным, необходимо, чтобы число \(\lfloor x / 10 \rfloor\) являлось неадекватным, но это еще не все. Упорядочим все неадекватные числа по возрастанию. Пусть число \(\lfloor x / 10 \rfloor\) имеет номер \(k\). Тогда, чтобы число \(x\) было неадекватным, необходимо, чтобы последняя цифра числа \(x\) была строго меньше остатка от деления \(k\) на \(11\).

Здесь \(\lfloor x / 10 \rfloor\) обозначает \(x/10\), округлённое вниз.

Таким образом, если число \(x\) — \(m\)-е во возрастанию неадекватное число, и \(m\) при делении на \(11\) даёт остаток \(c\), то числа \(10 \cdot x + 0, 10 \cdot x + 1 \ldots, 10 \cdot x + (c - 1)\) будут неадекватными, а числа \(10 \cdot x + c, 10 \cdot x + (c + 1), \ldots, 10 \cdot x + 9\) не будут неадекватными.

Первые несколько неадекватных чисел это \(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 21, 30, 31, 32 \ldots\). Дальше, так как \(4\) — четвёртое неадекватное число, то \(40, 41, 42, 43\) — неадекватные, а \(44, 45, 46, \ldots, 49\) не являются неадекватными; так как \(10\) — \(10\)-е неадекватное число, то числа \(100, 101, 102, \ldots, 109\) все являются неадекватными. И так как \(20\) — \(11\)-е неадекватное число, то числа \(200, 201, 202, \ldots, 209\) не являются неадекватными.

Путешествуя по странам, вы совершали много покупок и записывали все цены, за которые покупали товары. К сожалению, все числа смешались в одну большую стоку из цифр \(s\) и вы потеряли границы между соседними числами. Теперь вам интересно, когда иностранные продавцы могли завышать вам цены. Поэтому вы хотите узнать, сколько подстрок получившейся у вас строки являются неадекватными числами. Если какая-то подстрока встречается в нескольких различных позициях, все ее вхождения считаются различными.

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

В единственной строке находится строка \(s\) (\(1 \le |s| \le 10^5\)), состоящая только из цифр. Гарантируется, что на первой позиции \(s\) стоит не ноль.

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

В единственной строке выведите количество подстрок \(s\), являющихся неадекватными числами.

Примечание

В первом тесте из условия неадекватными числами, входящими как подстрока, являются \(1, 2, 4, 21, 40, 402\).

Во втором тесте неадекватными числами, входящими как подстрока, являются \(1\) и \(10\), при этом \(1\) входит как подстрока дважды (на первой и на второй позиции).


Примеры
Входные данныеВыходные данные
1 4021
6
2 110
3

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

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