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

Длинные фиббоначи - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ О перевыделении памяти для массива объектов http://www.cyberforum.ru/cpp-beginners/thread929938.html
Мне необходимо сделать динамический массив объектов класса, который будет расширяться при необходимости. Понятно, что для такого существует выделение через malloc и перевыделение через realloc, но...
C++ сортировка вектора sort() программа заполняет вектор рандомными числами в диапазоне от 1 до 100 сортирует с помощью алгоритма sort(.begin(),.end()) - в восходящем порядке можно ли отсортировать с помощью sort() - в... http://www.cyberforum.ru/cpp-beginners/thread929937.html
C++ Как работать с ресурсами? Visual C++
Как запихнуть .exe файл в программу и из программы считать .exe файл...? чтобы в итоге один .exe содержал другой .exe и мог последний извлекать...
Подскажите как прекратить чтение из файла? C++
Есть программа: #include<iostream> #include<fstream> using namespace std; int main() { ifstream cin("in.txt"); int name; while(true) {
C++ Механизмы онлайн игр http://www.cyberforum.ru/cpp-beginners/thread929889.html
Как в онлайн играх происходит одновременое отображение действий персонажа, к примеру, на всех экранах играющих? Игрок, к примеру, нажимает на какое-то умение, информация об этом отправляется на...
C++ Калькулятор в книге Страуструпа Я знал, что это довольно тяжелая книга, поэтому начал читать ее после другой о С++, но пример "элементарного" калькулятора поставил меня в тупик с первых же строк. В этой теме я буду задавать вопросы... подробнее

Показать сообщение отдельно
Мозготрёп
0 / 0 / 0
Регистрация: 06.02.2013
Сообщений: 43
29.07.2013, 12:11  [ТС]
Всем спасибо за советы, поправил. работает. вроде...
Кликните здесь для просмотра всего текста
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
 
void fo (char a)
{
    cout.fill(' ');
    cout.width(a);
}
//функция формата вывода
 
 
void fvo ()
{
    cout.fill('0');
    cout.width(19);
}
//функция форматного вывода векторов
 
 
char sdiv (int a, int b)
{
    return a/b;
}
 
 
char cif (int a)
{
    if (a != 0)
    {
        a = sdiv(a,10);
        a = cif(a);
        a++;
    }
    return a;
}
//подсчёт цифр в числе
 
 
void output (unsigned long long a, vector<unsigned long long> b,char c)
{
            fo(c); cout << a;
            cout <<"--";
            for (int i = b.size()-1; i >= 0; i--)
            {
                if (i != b.size() - 1)
                {
                    fvo(); cout << b[i];
                }
                else
                    cout << b[i];
            }
}
//функция вывода
 
 
unsigned long long ldiv (unsigned long long a, unsigned long long b)
{
    return a/b;
}
//целочисленное деление
 
 
 
unsigned long long lmod (unsigned long long a, unsigned long long b)
{
    unsigned long long i;
    i = ldiv (a,b);
    i = i * b;
    return a-i;
}
//остаток от деления
 
 
vector<unsigned long long> sum (vector<unsigned long long> a, vector<unsigned long long> b,vector<unsigned long long>*c,vector<unsigned long long>*d) 
{
    unsigned long long i;
    unsigned long long con = 10000000000000000000;
    unsigned int j;
    unsigned int j1 = 0;
    for (j = 0; j < a.size() && j1 < b.size(); j++)
    {
        i = a[j] + b[j1];
        if (i >= con)
        {
            if (j == a.size() - 1)
            {
                (*c).push_back (0);
                (*d).push_back (0);
                a.push_back (ldiv(i,con));
                a[j] = lmod(i,con);
            }
            else
            {
                a[j+1] += ldiv(i,con);
                a[j] = lmod(i,con);
            }
        }
        else
        {
            a[j] = i;
        }
        j1++;
    }
    return a;
}
//функция сложения
 
 
int main()
{
    vector<unsigned long long> a;
    vector<unsigned long long> b;
    unsigned long long n = 1;
    int m;
    cin >> m;
    char c;//количество символов вывода
    c = cif(m);
    a.push_back(1);
    b.push_back(1);
    fo(c); cout << "0";
    cout << "--" << "1" << endl;
    if (m <= 0)
        exit (0);
    fo(c); cout << "1";
    cout << "--" << "1" << endl;
    if (m <= 1)
        exit (0);
    while (n <= m)
    {
        int i1;
        //if (n == 11) 
        //{
        //  cout << "0";
        //}
        a = sum(a,b,&a,&b);
        n++;
        output (n,a,c);
        cout << endl;
        if (n >= m)
            break;
        b = sum(b,a,&b,&a);
        n++;
        output(n,b,c);
        cout << endl;
        if (n >= m)
            break;
    }
    return 0;
}


Добавлено через 3 минуты
Цитата Сообщение от name? Посмотреть сообщение
исправить ваш
C++
1
unsigned long long con = 10000000000000000000;
на
C++
1
int con = 10;
так не интересно=)

Добавлено через 15 часов 22 минуты
Цитата Сообщение от name? Посмотреть сообщение
где правильный ответ будет
1023 =
450669963367781981310438323572888604936786059621860483080302 314960003064570872139624879260914103039624487326658034501121 953020936742558101987106764609420026228520234665586889971108 9246778413354004103631553925405243
Это точно? У меня почему-то
1023-450644500274694738009344784172044997895141274306859417224606979421671891834145399523676173385040044232128738509458667070 3247122923638621283990686502484775350417373306717238735084910144774978406511354356441956670011
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.