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

Задача . E. Модульная стабильность


Обозначим за \(x \bmod y\) остаток от целочисленного деления \(x\) на \(y\) (оператор \(\%\) в C++ или Java, mod в Pascal).

Назовем массив целых чисел \([a_1, a_2, \dots, a_k]\) стабильным, если для каждой перестановки \(p\) целых чисел от \(1\) до \(k\), и для каждого неотрицательного целого числа \(x\) выполняется следующее условие:

\( (((x \bmod a_1) \bmod a_2) \dots \bmod a_{k - 1}) \bmod a_k = (((x \bmod a_{p_1}) \bmod a_{p_2}) \dots \bmod a_{p_{k - 1}}) \bmod a_{p_k} \)

Другими словами, для каждого неотрицательного целого \(x\) значение \((((x \bmod a_1) \bmod a_2) \dots \bmod a_{k - 1}) \bmod a_k\) не зависит от порядка элементов в массиве \(a\).

Для двух заданных целых чисел \(n\) и \(k\) посчитайте количество стабильных массивов \([a_1, a_2, \dots, a_k]\), в которых \(1 \le a_1 < a_2 < \dots < a_k \le n\).

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

В единственной строке заданы два целых числа \(n\) и \(k\) (\(1 \le n, k \le 5 \cdot 10^5\)).

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

Выведите количество стабильных массивов \([a_1, a_2, \dots, a_k]\), в которых \(1 \le a_1 < a_2 < \dots < a_k \le n\). Так как ответ может быть очень большим, выведите его по модулю \(998244353\).


Примеры
Входные данныеВыходные данные
1 7 3
16
2 3 7
0
3 1337 42
95147305
4 1 1
1
5 500000 1
500000

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

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