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

Поиск чисел Фибоначчи - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Объясните, как в данном примере работает friend http://www.cyberforum.ru/cpp-beginners/thread1012759.html
friend bool operator== (const String& firstStr, const String& secondStr); Если писать код без friend, то возникает ошибка: слишком много параметров для этой функции оператора. Вопрос: ...
C++ Как записать третье условие Как записать третье условие if? Оно почему-то не срабатывает совсем, если пишу число больше 100 или меньше 1... Задание: напишите код, умножающий исходное число на 2, если оно принадлежит интервалу... http://www.cyberforum.ru/cpp-beginners/thread1012753.html
Как реализовать сравнение строк с русскими символами C++
Дело обстоит так: Нужно сравнить на сходство русские слова. Пробовал strcmp - но она что-то лениться с не англоязычными символами работать нормально =( через cin таже бодяга - в массив кладется...
C++ Проблема с циклом. Найти площадь фигуры ограниченной линиями.
у меня есть задача в которой нужно найти площадь фигуры ограниченной линиями вот какой код у меня получается но ошибка в самой площади у неё какое то неверное значение #include <math.h> #include...
C++ Генерация случайного числа с плавающей чточкой http://www.cyberforum.ru/cpp-beginners/thread1012697.html
Добрый день. Подскажите как генерировать случайное число типа float или double. Обычно использую rand(), но она подходит только для целых, насколько я знаю..
C++ Разница межу istream_iterator и istreambuf_iterator что это за буфер во втором случае? И что он дает в отличие от первого варианта? Что-то доку переварить никак не получается... подробнее

Показать сообщение отдельно
ZaMaZaN4iK
Мой лучший друг-отладчик!
164 / 164 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
20.11.2013, 13:19
Если нужна не последовательность чисел Фибоначчи, а только n-элемент, то думаю стоит воспользоваться алгоритмом нахождения за O(log N).
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ll fib(ll n)
{
    ll a=1,b=1,
        c=1,d=0,
        ta,tb,tc,td,rc=0,rd=1;
    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;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru