Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/56: Рейтинг темы: голосов - 56, средняя оценка - 4.88
 Аватар для ridikyu
0 / 0 / 1
Регистрация: 24.10.2013
Сообщений: 88

Число Фибоначчи 10​^18

28.11.2014, 18:58. Показов 11094. Ответов 57
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Очень важную роль в математике играет ряд чисел Фибоначчи. Каждое следующее число ряда Фибоначчи можно вычислить как сумму двух предыдущих.

F1 = F2 = 1
Fi = Fi-1 + Fi-2

Для заданного N (1 ≤ N ≤ 10​^18​​) найдите N-ое число ряда Фибоначчи. Так как данное число может быть достаточно большим, выведите его по модулю 1000000007.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
int main(int k, int f)
{
    unsigned long long  Fi, F0, F1;
    int n, i;
    std::cin >> n;
        
    F0 = 0;
    F1 = 1;
    for (i = 2; i <= n; i++)
    {
        Fi = F1 + F0;
        F0 = F1;
        F1 = Fi;
    }
        
        Fi = Fi % 1000000007;
        std::cout << Fi << "\n";
    
 
    return 0;
}
Ни как не могу понять кокой тип данных мне использовать. Помогите пожалуйста.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.11.2014, 18:58
Ответы с готовыми решениями:

Организовать массив записей, содержащий информацию о багаже ​​15 пассажиров
Сведения о багаже ​​пассажиров включают в себя количество вещей и общий вес. Организовать массив записей, содержащий информацию о багаже...

Вычислить сумму первых элементов, находящихся на нечетных местах и ​​их количество
дано целочисленный одномерный массив А, состоящий из 14 элементов. Вычислить и напечатать сумму первых элементов находящихся нанепарних...

Дано строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). ​​Определить количество слов, которые заканчиваются одной и той
Дано строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). ​​Определить количество слов, которые...

57
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
29.11.2014, 00:22
Студворк — интернет-сервис помощи студентам
Кстати, огонь настолько быстр, что проглатывает и числа порядка 10^18 без напряга, даже не надо было волшебный период искать
0
 Аватар для ridikyu
0 / 0 / 1
Регистрация: 24.10.2013
Сообщений: 88
29.11.2014, 00:23  [ТС]
_Ivana, привольна)))
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
29.11.2014, 00:23
Цитата Сообщение от ridikyu Посмотреть сообщение
жесть))
а вот здесь согласен - я сам когда понял этот метод, впечатлился до слез (буквально) от его красоты и мощи
1
29.11.2014, 00:25

Не по теме:

ridikyu, не тот пост выделил в лучший промазал

0
 Аватар для ridikyu
0 / 0 / 1
Регистрация: 24.10.2013
Сообщений: 88
29.11.2014, 00:39  [ТС]
_Ivana, ааа я запутался. я когда глянул вроде понял как все работает сейчас повнимательней посмотред, не чего не понятно. в функции fib
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
29.11.2014, 00:44
Было бы все с первого взгляда понятно - была бы ерунда. Я уже в н-цатый раз говорю про ссылку, которую дал на 2 странице темы - и что, кто-то прочитал ее? Уверен, что нет А альтернативную ссылку от TheFox на Хабр? А потом и удивляемся, что огонь, а непонятно.
0
37 / 37 / 18
Регистрация: 21.06.2013
Сообщений: 271
Записей в блоге: 1
29.11.2014, 00:47
кто может создать тип для длинного числа?
0
 Аватар для ridikyu
0 / 0 / 1
Регистрация: 24.10.2013
Сообщений: 88
29.11.2014, 00:54  [ТС]
_Ivana, да))) я просто полистал, каюсь((((. это окей, разберусь.
и совсем тупой вопрос, наверное fib(1, 0, 0, 1, n1) ,что означают эти цифры?
на скок я знаю что в скобках указываются переменные как то так fib(a, b, p, q , n).
1, 0, 0, 1, n1 этими значениями ты число к нужному виду приводишь?
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
29.11.2014, 01:00
Это стартовые значения для розжига. Если разберешься в алгоритме, сам все поймешь.
1
 Аватар для ridikyu
0 / 0 / 1
Регистрация: 24.10.2013
Сообщений: 88
29.11.2014, 10:11  [ТС]
_Ivana, ааа)))))

Добавлено через 9 часов 10 минут
_Ivana, Прогнал через кантест задача зачтена))) круто, спасибо.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
29.11.2014, 13:32
Теперь можешь показать код преподавателю. Только предварительно желательно в нем разобраться
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
29.11.2014, 14:46
Вариант с возведением матрицы в степень:
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
#include <cstddef>
#include <iostream>
 
template <class T, T mod>
class mat22
{
public:
    mat22(T m00, T m01, T m10, T m11) : m_{m00 % mod, m01 % mod, m10 % mod, m11 % mod} { };
    explicit mat22(T n = 0) : mat22{n, 0, 0, n} { }
    T& operator()(std::size_t row, std::size_t col) { return m_[row][col]; }
    const T& operator()(std::size_t row, std::size_t col) const { return m_[row][col]; }
    mat22& operator*=(const mat22& rhs);
private:
    T m_[2][2];
};
 
template <class T, T mod>
mat22<T, mod> operator*(const mat22<T, mod>& lhs, const mat22<T, mod>& rhs)
{
    return {
        lhs(0, 0) * rhs(0, 0) + lhs(0, 1) * rhs(1, 0),
        lhs(0, 0) * rhs(0, 1) + lhs(0, 1) * rhs(1, 1),
        lhs(1, 0) * rhs(0, 0) + lhs(1, 1) * rhs(1, 0),
        lhs(1, 0) * rhs(0, 1) + lhs(1, 1) * rhs(1, 1),
        };
}
 
template <class T, T mod>
mat22<T, mod>& mat22<T, mod>::operator*=(const mat22<T, mod>& rhs)
{
    return *this = *this * rhs;
}
 
template <class T, class U>
T power(T base, U exp)
{
    T result{1};
    while (true /*exp != 0*/)
    {
        if (exp % 2 != 0)
            result *= base;
        exp /= 2;
        if (exp == 0)
            break;
        base *= base;
    }
    return result;
}
 
int main()
{
    unsigned long long n;
    std::cin >> n;
    std::cout << power(mat22<unsigned long long, 1000000007>{1, 1, 1, 0}, n)(0, 1);
}
0
 Аватар для ridikyu
0 / 0 / 1
Регистрация: 24.10.2013
Сообщений: 88
30.11.2014, 01:05  [ТС]
_Ivana, привет. если будут время посмотри эту задачу))) Двумерный массив. Найти подмассив, имеющий наибольшую сумму элементов
0
 Аватар для ridikyu
0 / 0 / 1
Регистрация: 24.10.2013
Сообщений: 88
14.12.2014, 17:06  [ТС]
dzrkot, taras atavin, привет посмотри пожалуйста эту тему Удалить указанные фрагменты строки
0
 Аватар для ridikyu
0 / 0 / 1
Регистрация: 24.10.2013
Сообщений: 88
15.12.2014, 00:50  [ТС]
_Ivana, Помоги пожалуйста)))) Удалить указанные фрагменты строки
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
15.12.2014, 03:42
_Ivana, очень хороший способ, а главное, рекурсия хвостовая, и нет никакого оверхеда на него. Правда слабо понял смысл этого преобразования. Вроде как у нас есть какой-то оператор A и B, и мы аддитивно их сочетая получаем нужную последовательность. Но че-то мне сомнительно это... Да и лисп читать немного напряжно для мозга

Добавлено через 2 минуты
Вспомнил кстати этот алгоритм, считал в прологе с его помощью фибоначчи. Правда тогда не особо понял математическую подоплеку...
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
16.12.2014, 14:43
Psilon, ну я тоже не сам придумал этот алгоритм, а содрал его с лиспа по ссылке И хоть я его более-менее понял, придумать я его вряд ли бы смог. Подозреваю, что он является следствием из алгоритма с перемножением матриц, представленным тоже в этой теме, но без упоминания матриц - просто постулирована и доказана справедливость алгебраических преобразований.
0
Заблокирован
16.12.2014, 15:18
могу скинуть похожую задачу. принцип почти тот же, но надо будет изменить

Добавлено через 59 секунд
хотя у меня была функция по подсчету кол-ва чисел
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.12.2014, 15:18

Стеки: перенести пирамиду из​ колец за наименьшее число ходов на другой стержень
Даны три стержня, на один из которых нанизаны несколько колец, причём кольца отличаются размером и лежат меньшее на большем. Задача состоит...

Дано число А. Проверить – это число Фибоначчи или нет
Ребята, помогите решить задачу по целочисленной арифметике, надо написать код на c++. Очень надо, помогите, пожалуйста. Собственно, задача:...

Написать программу, которая определяет число Фибоначчи под номером N и проверяет, является ли это число возрастающим
Доброго времени! Есть задача: &quot;Написать программу, которая определяет число Фибоначчи под номером N и проверяет, является ли это...

Число Фибоначчи
Дан одномерный массив А неупорядоченных натуральных чисел.Вывести на экран те элементы массива, которые нельзя представить суммой двух...

Найти n-е число Фибоначчи
Написал функцию, по логике должна работать. Но выдает немного не то. Задается число n , и булевая переменная. если true , вывести...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
58
Ответ Создать тему
Новые блоги и статьи
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru