Республиканская олимпиада по информатике, 2015 год, 9 класс
Задача D. Помощь Жандосу
На прошлой неделе на уроке математики Жандос узнал как взять число по модулю. Определим A по модулю B как остаток от деления A на B и обозначим его как A mod B. Учитель по математике задал домашнее задание: найти количество чисел В от L до R включительно, что A mod B = C.Жандосу нужно сделать домашнюю работу, но он хочет посмотреть футбол. Потому он обратился к вам за помощью. Напишите программу, которая по числам A, C, L, R найдет количество чисел B от L до R включительно, что A mod B = C.
Входные данные:
В единственной строке ввода даны целые числа A, C, L, R (0≤A,C,L,R≤109).Выходные данные:
Выведите ответ на задачу.Примеры:
1.Вход:21 5 1 21Ответ:
22.Вход:
32443 463 457 3716Ответ:
12
Оценивание:
Баллы выдаются пропорционально количеству пройденных тестов.:Не менее 25% тестов с ограничениями 0≤R−L≤106. ( Ескендір Сұлтанов )
Комментарий/решение:
Заметим, что если A≡C(modB), где C остаток, то C<B и A−C⋮B. Значит нам достаточно итерировать через все делители n=A−C и проверять условия L≤b≤R и C<b. Для эффективности будем делили искать по парам, (учитывая возможность n=i2) от 1 до √n.
Возможно, что при неправильном наборе формул, они будут
доредактированы модератором. При этом содержание не будет меняться.