![]() |
|
|
![]()
|
|
| politex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 19.11.2004 Репутация: нет Всего: нет |
Как можно найти n-элемент и S(n)-сумму чисел Фибоначчи
|
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
а в чем проблема?
если совсем просто, то в виде рекурсивной функции, при вычислении накапливать или вопрос в оптимизации? -------------------- qqq |
|||
|
||||
| politex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 19.11.2004 Репутация: нет Всего: нет |
2 maxim1000
Da, vopros v optimizatsii. U nas prosto pamyat i vremiya ogranichena. Time limit: 0,2 s Memory limit: 600 Kb. Nash kod takoy:
|
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
есть один интересный подход:
рассмотрим числа Фибоначчи, как состояние динамической дискретной системы x - последнее число y - предпоследнее (x,y)->(x+y,x) данное преобразование линейное, а значит, описывается матрицей (2*2) (1 1) (0 1) первоначальный вектор (1,1) для получения n-го числа Фибоначчи нуно возвести матрицу в n-ю степень и подействовать ней на (1,1) (одна из координат и будет ответом) возведение матрицы в n-ю степень занимает порядка log n операций теперь о сумме: для вычисления суммы в состояние системы можно ввести еще один параметр - сумма (x,y,s)->(x+y,x,s+x) в этому случае матрица получается 3*3: (1 1 0) (0 1 0) (1 0 1) теперь просто надо возвести в степень ее... Добавлено @ 15:13 ну и немного о возведении матрицы в степень n за время порядка log n
тип matrix использовал для понятности, должен поддерживать операцию умножения и конструктор копии -------------------- qqq |
|||
|
||||
| podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
maxim1000
Дай координаты этого подхода. Где взял? |
|||
|
||||
| MBo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 10.6.2002 Репутация: 5 Всего: 18 |
Если не возбраняется вещественная арифметика, то
s5=Sqrt(5) F(n)=((1+s5)^n-(1-s5)^n)/(2^n*s5) или F(n)=Round(Fi^n/s5) где Fi - золотое сечение, (1+s5)/2 Что же касается суммы, то S(n)=F(n+2)-1 |
|||
|
||||
| maxim1000 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
когда-то в лицее рассказывали в виде таких формул:
а когда я вспомнил числа Фибоначчи после того, как изучил линейную алгебру и теорию управления динамическими системами, придумал такой подход к этим формулам (там просто надо расписать матрицу в n-й степени) -------------------- qqq |
||||
|
|||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |