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

злополучные числа фибоначчи - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Остаток деления от числа фибоначчи http://www.cyberforum.ru/cpp/thread13731.html
подскажите, как максимально минимизировать такой алгоритм: #include <iostream> using namespace std; const int N = 2; void mult(long long a, long long b, long long res, long long d){ long long c = {0, 0, 0, 0}; for(int i = 0; i < N; i++) for(int j = 0; j < N; j++){ c = 0;
C++ Числа Фибоначчи У меня вот какая проблема: Числа Фибоначчи определяются рекуррентной формулой: f0 = 0; f1 = 1; fn = fn-1 + fn-2; Начало последовательности имеет вид 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ... . Входные данные: В единственной строке находится число N (0 <= N <= 10000). Выходные даны: Выведите N-те число Фибоначчи. Пример введения http://www.cyberforum.ru/cpp/thread13725.html
C (СИ) Как правильно очистить память
Пишу С-код... Выделяю память под массив строк так: char **Strings; Strings = malloc(StrsCount); for (i=0;i<StrsCount;i++) { Strings = malloc(strlen("от чего-нить")+1); }
Найти ошибку в коде C (СИ)
void GetMyMAC(char *mdmac) { struct ifaddrs *ifa, *ifap; struct sockaddr_dl *sdl; int i; MD5_CTX md5handler; unsigned char md5digest; char mdd; MD5_Init(&md5handler);
C++ Алгоритм игры Быки -коровы в С++ http://www.cyberforum.ru/cpp/thread13658.html
сложно ли реализовать алгоритм игры Быки -коровы в С++
C++ Делаем игру. Можете помочь? Знаю, что ваще не по теме, но нормальных программистов, кроме как на специальных форумах, как этот, мы найти нигде не можем. Короче, нужны программисты на C++. Наверняка среди вас есть люди, кто не проч заделать игру, но по какой-то причине до сих пор не занялся этим(ну мало ли у кого какая история). Мы предлагаем таким людям объединиться, чтобы идеи и желание не пропадали зря. Терять вам... подробнее

Показать сообщение отдельно
Том Ардер
Модератор
 Аватар для Том Ардер
3644 / 2263 / 276
Регистрация: 15.06.2009
Сообщений: 3,976
08.12.2009, 02:31     злополучные числа фибоначчи
Поправил длинную арифметику.
Код рабочий. Можно, конечно, элегантнее. Например, с динамическими массивами.

файл phib.cpp
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <iomanip>
using namespace std;
 
const int N = 250;  // phi(1000) порядка 1.e209
 
typedef unsigned char byte;
 
void add(byte a[N], byte b[N], byte c[N])
{
    byte    over = 0;
 
    for( int i = N - 1; i >= 0; i--)
    {
        c[i] = a[i] + b[i] + over;
 
        if( c[i] >= 10 )
        {
            over = c[i] / 10;
            c[i] = c[i] % 10;
        }
        else
        {
            over = 0;
        }
    }
}
 
void phib(int n)
{
    byte fib0[N];
    byte fib1[N];
    byte fib2[N];
 
    for( int i = 0; i < N; i++)
    {
        fib0[i] = 0;
        fib1[i] = 0;
        fib2[i] = 0;
    }
 
    fib0[N - 1] = 1;
    fib1[N - 1] = 1;
 
    for( i = 2; i < n; i++ )
    {
        add( fib0, fib1, fib2 );
 
        memmove( fib0, fib1, sizeof(byte)*N );
        memmove( fib1, fib2, sizeof(byte)*N );
    }
 
    i = 0;
    while( fib2[i] == 0 ) i++;
    
    for( ; i < N; i++)
    {
        cout << setw(1) << char('0' + fib2[i]);
    }
    cout << endl;
}
файл main.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <iomanip>
using namespace std;
 
void phib(int n);
 
int main()
{
    int n;
 
    cout << "n = ? ";
    cin >> n;
 
    phib( n );
 
        system("pause");
 
    return 0;
}
Результат: phi(1) = phi(2) = 1 => phi(1000) = 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875

Wolfram Mathematica даёт то же самое
 
Текущее время: 03:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru