@impelix

Как найти все способы представить число в виде произведения чисел Фибоначчи?

МОИ ИДЕИ
1) Ищем ряд чисел Фибоначчи до числа, Которое мы хотим представить как произведение (включая его)
2) Рекурсивно перебираем все варианты?
Может есть какой то другой более быстрый способ?
Задача на АСМП(https://acmp.ru/asp/do/index.asp?main=task&id_cour..., она же 2 задача регионального этапа всош в этом году
  • Вопрос задан
  • 359 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Я бы рекурсивно решал, перебирая все числа фиббоначи. Если делится - запускаемся рекурсивно от частного. Суммируем ответы для всех вариантов делителя.

Что бы не перебирать разные перестановки множителей (а они в ответе, судя по примерам, не нужны), я бы передавал в функцию еще и максимальное разрешенное число фиббоначи. Изначально разрешены все числа, но при делении на какое-то число его же и передаем дальше. Таким образом функция будет перебирать только не возрастающие последовательности делителей.

Можно будет чуть ускорить, используя какой-нибудь ассоциативный массив для запоминания ответов. Его можно даже переиспользовать среди всех тестов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы