Cod sursa(job #1920179)

Utilizator KronSabau Valeriu Kron Data 9 martie 2017 22:50:29
Problema Al k-lea termen Fibonacci Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <vector>
#include <fstream>
#define MOD 666013
#define K 2
using namespace std;
ifstream f("kfib.in");
ofstream g("kfib.out");
vector<vector<long long > > A (K+1,vector<long long>(K+1)),B(K+1,vector<long long>(K+1)),AUX(K+1,vector<long long>(K+1));
int n;

vector<vector<long long> > inmultire(vector<vector<long long> > A,vector<vector<long long> > B)
{
    vector<vector<long long> >C(K+1,vector<long long>(K+1));
    for(int k=1;k<=K;k++)
        for(int i=1;i<=K;i++)
            for(int j=1;j<=K;j++)
                C[i][j]=(C[i][j]+A[i][k]*B[k][j])%MOD;
    return C;
}



int main()
{
    f >> n;
    A[1][1]=1;
    A[1][2]=1;
    B[2][1]=1;
    B[1][2]=1;
    B[2][2]=1;
    n--;
    while(n)
    {
        if(n%2)
        {
            A=inmultire(A,B);
            n--;
        }
        B=inmultire(B,B);
        n=n/2;
    }
    g << A[1][1] << "\n";
    return 0;
}