Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Олимпиадная задача "дроби" на питоне.

В то время, пока другие дети бегали по улицам или гоняли мяч, мальчик Слава сидел дома и решал сложную математическую проблему. Вкратце, проблема выглядела так.

Каждое натуральное число, начиная с трёх, можно представить в виде суммы различных натуральных чисел, например, 5=3+2=4+1. А возможно ли представить правильную дробь m/n в виде суммы различных членов гармонического ряда 1/2, 1/3, 1/4, …, то есть m/n=1/x+1/y+1/z+…? При этом должно выполняться условие x < y < z < … Если существует несколько решений, то надо найти то из них, у которого значение x минимально. Если неоднозначность не снимается, то надо найти решение с минимальным y, и так далее.

Входные данные
Входной файл INPUT.TXT содержит два натуральных числа m и n (1 ≤ m < n ≤ 32).

Выходные данные
В выходной файл OUTPUT.TXT выведите найденные числа x, y, z, … через пробел.

Пример
5 6
2 3

По дате
По рейтингу
Аватар пользователя
Новичок
5лет

В питоне есть прекрасный класс Fraction https://docs.python.org/3.1/library/fractions.html
Далее твоя задача сводится к вычитанию из данной дроби дробей, которые строго меньше нее, по порядку, начиная с 1/2. Например в приведенном примере
5/6 больше 1/2, значит вычитаем 1/2. пишем 2, получаем 1/3
из 1/3 вычитаем 1/3, пишем 3, получаем 0.
Конец.

Аватар пользователя
5лет

6