Статья Автор: Лебедев Дмитрий

TUZ_312. Наименьшие целые степени

TUZ_3-12. Наименьшие целые степени

TUZ_3-12. Наименьшие целые степени
3.12. Наименьшие целые степени
Большие целые степени могут усложнить вычисления с точки зрения времени и потребляемого объема памяти.
Цель этой задачи: найти наименьшие положительные целые числа x и y, такие, что ax и by находятся в 
пределах определенного допуска друг друга. В данном контексте под «допуском» понимается максимально
допустимая разность между двумя целочисленными степенями a и b.
Ваша задача: написать функцию, которая принимает a, b и tolerance и 
возвращает наименьшие положительные целые числа x и y.
В табл. 3.12 показаны ожидаемые результаты для некоторых входных данных.
Таблица 3.12. Некоторые ожидаемые результаты для поиска наименьших целых степеней
a, b, tolerance Ожидаемый результат 
12, 16, 10 (19, 17)
32, 40, 99 (248, 233)
43, 33, 73 (66, 71)

Алгоритм
Для решения этой задачи мы используем «жадный» подход.
Алгоритм пытается найти наименьшую пару положительных целых чисел x и y, соответствующих заданному допуску.
Для этого он последовательно увеличивает значения x и y, пока разность между степенями ax и by не станет меньше или равна заданному допуску.
Этот не гарантирует получение оптимального решения, но находит достаточно хорошее решение за разумное время.
1. Принимаются целые числа a и b.
2. Переменным x и y присваивается 1.
3. Переменным a_pow и b_pow присваиваются значения a и b соответственно.
4. Запускается бесконечный цикл:
а) если a_pow больше, чем b_pow, то допуск tolerance сравнивается с результатом деления
    b_pow на разность между a_pow и b_pow;
б) если допуск меньше, то возвращаются x и y;
в) иначе y увеличивается на 1 и b_pow умножается на b;
г) если a_pow меньше, чем b_pow, то допуск tolerance сравнивается с результатом деления
    a_pow на разность между b_pow и a_pow;
д) если допуск меньше, то возвращаются x и y;
е) в противном случае x увеличивается на 1 и a_pow умножается на a;
ж) если a_pow и b_pow равны, то возвращаются x и y.


Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать