eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Множини

Множини

Для розподілення участників Кубку Векуа по аудиторіям розробляється система багатопараметричного жеребкування. Вам дісталась задача написати для системи окремий модуль, який використовується для визначення параметрів жеребкування. Для заданого натурального \textbf{x} > \textbf{1} побудуємо усі множини, які складаються з \textbf{k} різних натуральних чисел, менших або рівних \textbf{n}, такі, що для довільного натурального числа \textbf{y} як мінімум одне з чисел \textbf{y} та \textbf{x·y} не належить даній множині. Ваша задача - обчислити залишок від ділення закальної кількості таких множин на задане натуральне число \textbf{m}. \InputFile У вхідному файлі записано чотири цілих числа \textbf{n}, \textbf{m}, \textbf{k}, \textbf{x} (\textbf{1} ≤ \textbf{n} ≤ \textbf{10^18}, \textbf{2} ≤ \textbf{m} ≤ \textbf{10^6}, \textbf{0} ≤ \textbf{k} ≤ \textbf{1000}, \textbf{2} ≤ \textbf{x} ≤ \textbf{10}). \OutputFile У вихідний файл виведіть залишок від ділення закальної кількості описаних в умові множин на \textbf{m}.
Ліміт часу 20 секунд
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
6 1234 3 2
Вихідні дані #1
9
Джерело III MSU-CBOSS Open Cup in programming. Grand Prix of South Caucasus, April 29, 2007