Всем привет. Да, такая вот простая с виду задача - найти
при заданных целых положительных
(значения
тоже предполагаются целыми).
То, что её можно пытаться решать как задачу целочисленного линейного программирования (пусть и очень простую), понятно. Мне это показалось было стрельбой из пушки по воробьям, но попытавшись пойти напролом (см. ниже), я уже начал сомневаться...
Мой путь решения оказался таким. Во-первых,
и
можно считать взаимно простыми и найти
такие, что
. Пусть теперь
, тогда мы ищем
(значения
считаются целыми положительными). Далее, целые решения
сравнения
имеют вид
где
- произвольные целые, а выражения вида
обозначают наибольший общий делитель (вроде, не напортачил).
В итоге получается задача минимизации
при ограничении вида
. То есть (ещё одна, учитывая предыдущее) вариация алгоритма Евклида.
Вопрос напрашивается. Так и ломиться? Или назад в ЦЛП? Или, может, упростить можно...
P.S. Всякие граничные случаи я рассматривать не стал, и так текста многовато.