В задаче разбирается интересный математический факт. В программе для ее решения использовал хранение натуральных дробей в массиве и функцию, сокращающую дроби
Условия задачи
Дробь 49/98 является любопытной, поскольку неопытный математик, пытаясь сократить ее, будет ошибочно полагать, что
49/98 = 4/8
являющееся истиной, получено вычеркиванием девяток.
Дроби вида
30/50 = 3/5
будем считать тривиальными примерами.
Существует ровно 4 нетривиальных примера дробей подобного типа, которые меньше единицы и содержат двухзначные числа как в числителе, так и в знаменателе.
Пусть произведение этих четырех дробей дано в виде несократимой дроби (числитель и знаменатель дроби не имеют общих сомножителей). Найдите знаменатель этой дроби.
Описание работы программы
Дроби решил хранить в виде массивов вида:
массив[числитель,знаменатель]
Далее в цикле перебираем значения числителя и знаменателя, при этом по заданию:
- числа двузначные (от 10 до 99)
- дробь меньше единицы => числитель меньше знаменателя
Чтобы удовлетворять условию задачи дробь должна иметь одинаковые цифры в числителе и знаменателе дроби «по диагонали». Только удовлетворяющие этой проверке дроби обрабатываются программой - из них удаляется пара одинаковых цифр в функции del_nums().
Далее обе дроби (с повторяющимися цифрами и без них) упрощаются и сравниваются. Если они совпали, то искомая дробь найдена.
При работе функции, поиск общего множителя идёт от большего к меньшему, чтобы полученный общий делитель гарантированно был максимальным.
Найденные таким образом «нетривиальные» дроби перемножаются и ещё раз сокращаются.
Ответ на задачу:
P.S. Изначальная цель блога - получить "фидбек" в комментариях, чтобы более опытные "кодеры" указывали мне на ошибки, советовали и всячески помогали в саморазвитии.
Также приглашаю всех на мой сайт)
На нем Вы можете посмотреть ответ на задачу Эйлера 33 (когда необходима лишь небольшая подсказка) и последний, самый быстрый вариант решения.
В общем, добро пожаловать на канал))