Форум программистов, компьютерный форум, киберфорум
Наши страницы

Числа Фибоначчи - растолковать код - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычисление суммы http://www.cyberforum.ru/cpp-beginners/thread1243126.html
Нужно написать программу чтобы в итоге она выдавала сумму: 1/1+3/2+5/3+7/4 ..... 99/50. При этом нужно использовать for, while and do_while.
C++ Оптимизация робота Написал вот эту задачу: Робот Имя входного файла: robot.in Имя выходного файла: robot.out Ограничение по времени: 2 секунды Ограничение по памяти: 64 мегабайта В исследовательской лаборатории... http://www.cyberforum.ru/cpp-beginners/thread1243123.html
Кодировки (ошибки кодировки) в логировании C++
Здравствуйте. Работаю с WINAPI и оттуда нормально приходят наименования на русском. Вот решил логирование организовать и на этом повалился (приходят символы как при проблеме с кодировкой). Вопрос:...
Текст в панели задач Windows C++
Какие есть функции для вывода текста на панель задач?
C++ Ошибка передачи параметра в функцию http://www.cyberforum.ru/cpp-beginners/thread1243080.html
#include "stdafx.h" #include "War.h" int _tmain(int argc, _TCHAR* argv) { War warv("Battle"); warv.addWarrior(Barracks::createWarrior("Archer",warv),100); warv.LetTheWarBegin(); }...
C++ Вычисление времени полета тела Написать программу для вычисления времени полета тела, брошенного под углом к горизонту. Начальная скорость тела равно V и направлена под углом alpha к горизонту. Для вычисления использовать... подробнее

Показать сообщение отдельно
ZaMaZaN4iK
Мой лучший друг-отладчик!
164 / 164 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
16.08.2014, 02:13
Есть также эффективный алгоритм вычисления N-ого числа Фибоначчи за logN. Вот код, разбирайтесь:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
 
using namespace std;
 
int fib(int n)
{
    int a=1,b=1,
        c=1,d=0,
        rc=0,rd=1,
        ta,tb,tc,td;
    while(n)
    {
        if(n & 1)
        {
            tc=rc*a+rd*c;
            td=rc*b+rd*d;
            rc=tc;rd=td;
        }
        ta=a*a+b*c;
        tb=a*b+b*d;
        tc=c*a+d*c;
        td=c*b+d*d;
        a=ta;b=tb;c=tc;d=td;
        n>>=1;
    }
    return rc;
}
 
int main()
{
    int n;
    cin>>n;
    cout<<fib(n)<<endl;
    system("pause");
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru