Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Числа Фибоначчи, S(n)-сумма и n-элемент 
:(
    Опции темы
politex
Дата 22.11.2004, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 19.11.2004

Репутация: нет
Всего: нет



Как можно найти n-элемент и S(n)-сумму чисел Фибоначчи
PM MAIL   Вверх
maxim1000
Дата 22.11.2004, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



а в чем проблема?
если совсем просто, то в виде рекурсивной функции, при вычислении накапливать
или вопрос в оптимизации?


--------------------
qqq
PM WWW   Вверх
politex
Дата 22.11.2004, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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:

Код

program p123_3;

{$APPTYPE CONSOLE}

uses
 SysUtils;

var k,s,i,f1,f2:integer;

begin
readln(k);
s:=0;
f1:=1;
f2:=1;
s:=2;
for i:=3 to k do
if odd(i) then f1:=f1+f2 else f2:=f1+f2;
if odd(k) then s:=2*f1+f2-1 else s:=2*f2+f1-1;
Writeln(s);
readln;
end.


PM MAIL   Вверх
maxim1000
Дата 22.11.2004, 15:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 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 операций

теперь о сумме:
для вычисления суммы в состояние системы можно ввести еще один параметр - сумма smile
(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 MatrixPower(matrix A,int n)
{
 if(n%2==0)
   return MatrixPower(A*A,n/2);
 else
   return A*MatrixPower(A*A,n/2);
}

тип matrix использовал для понятности, должен поддерживать операцию умножения и конструктор копии


--------------------
qqq
PM WWW   Вверх
podval
Дата 22.11.2004, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



maxim1000
Дай координаты этого подхода. Где взял?
PM WWW ICQ   Вверх
MBo
Дата 23.11.2004, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
maxim1000
Дата 23.11.2004, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата(podval @ 22.11.2004, 19:54)
maxim1000
Дай координаты этого подхода. Где взял?

когда-то в лицее рассказывали в виде таких формул:
Цитата(MBo @ 23.11.2004, 07:28)
Если не возбраняется вещественная арифметика, то
s5=Sqrt(5)
F(n)=((1+s5)^n-(1-s5)^n)/(2^n*s5)
или
F(n)=Round(Fi^n/s5)
где Fi - золотое сечение, (1+s5)/2

а когда я вспомнил числа Фибоначчи после того, как изучил линейную алгебру и теорию управления динамическими системами, придумал такой подход к этим формулам (там просто надо расписать матрицу в n-й степени)


--------------------
qqq
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0644 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.