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

Остаток деления от числа фибоначчи - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Числа Фибоначчи http://www.cyberforum.ru/cpp/thread13725.html
У меня вот какая проблема: Числа Фибоначчи определяются рекуррентной формулой: f0 = 0; f1 = 1; fn = fn-1 + fn-2; Начало последовательности имеет вид 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ... . Входные данные: В единственной строке находится число N (0 <= N <= 10000). Выходные даны: Выведите N-те число Фибоначчи. Пример введения
C (СИ) Как правильно очистить память Пишу С-код... Выделяю память под массив строк так: char **Strings; Strings = malloc(StrsCount); for (i=0;i<StrsCount;i++) { Strings = malloc(strlen("от чего-нить")+1); } http://www.cyberforum.ru/cpp/thread13688.html
Найти ошибку в коде 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++ Алгоритм игры Быки -коровы в С++
сложно ли реализовать алгоритм игры Быки -коровы в С++
C++ Делаем игру. Можете помочь? http://www.cyberforum.ru/cpp/thread13641.html
Знаю, что ваще не по теме, но нормальных программистов, кроме как на специальных форумах, как этот, мы найти нигде не можем. Короче, нужны программисты на C++. Наверняка среди вас есть люди, кто не проч заделать игру, но по какой-то причине до сих пор не занялся этим(ну мало ли у кого какая история). Мы предлагаем таким людям объединиться, чтобы идеи и желание не пропадали зря. Терять вам...
C++ Исходники асечного (ICQ) протокола Народ, давно ищу одну вещь, решил создать ветку. У кого-нибудь есть исходники асечного (ICQ) протокола? Полностью рабочего. Нашел какую-то х... там отправка данных не работает... Поделитесь, кто богат, плз. подробнее

Показать сообщение отдельно
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8506 / 2173 / 61
Регистрация: 07.03.2007
Сообщений: 10,848
Завершенные тесты: 1

Остаток деления от числа фибоначчи - C++

11.10.2008, 11:56. Просмотров 2178. Ответов 0
Метки (Все метки)

подскажите, как максимально минимизировать такой алгоритм:
Код
#include <iostream>
using namespace std;
const int N = 2;
void mult(long long a[N][N], long long b[N][N], long long res[N][N], long long d){
  long long c[N][N] = {0, 0, 0, 0};
  for(int i = 0; i < N; i++)
    for(int j = 0; j < N; j++){
      c[i][j] = 0;
      for(int k = 0; k < N; k++)
        c[i][j] = (c[i][j] + (a[i][k] % d)*(b[k][j] % d)) % d;
      c[i][j] = c[i][j] % d;
    }
  memmove(res, c, 4 * sizeof(long long));
}
int main()
{
    long long mp[N][N] = {0, 1, 1, 1};
    long long mr[N][N] = {1, 0, 0, 1};
    long long n, d;
    cin>>n>>d;
    if(n <= 2){
      cout<<1 % d;
      return 0;
    }
    while(n > 0){
      if((n & 1) == 0){
        mult(mp, mp, mp, d);
        n >>= 1;
      }
      n--;
      mult(mr, mp, mr, d);
    }
    cout<<mr[0][1]<<endl;
 return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru