Cod sursa(job #2409466)

Utilizator davidisimo040Asandoaiei David davidisimo040 Data 19 aprilie 2019 01:49:48
Problema Al k-lea termen Fibonacci Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("kfib.in");
ofstream fout ("kfib.out");
#define ll long long
ll v[2][2],k,i,a,b,c,d;
#define MODULO 666013
struct mat{long long int a11,a12,a21,a22;};
mat x,I;

mat ceva;
mat prod (mat x , mat y){
mat rez;

    rez.a11=((x.a11*y.a11)%MODULO+(x.a12*y.a21)%MODULO)%MODULO;

    rez.a12=((x.a11*y.a12)%MODULO+(x.a12*y.a22)%MODULO)%MODULO;

    rez.a21=((x.a21*y.a11)%MODULO+(x.a22*y.a21)%MODULO)%MODULO;

    rez.a22=((x.a21*y.a12)%MODULO+(x.a22*y.a22)%MODULO)%MODULO;

        return rez;
}
mat pow(mat  x,long long int n)

{

    if(!n)

        return I;

    if(n%2)

        return prod(x,pow(prod(x,x),n/2));

    else

        return pow(prod(x,x),n/2);

}
int main()
{

     x.a11=x.a12=x.a21=1;

    x.a22=0;

    I.a11=I.a22=1;


ll n;
    fin>>n;

    ceva=pow(x,n);

    fout<<ceva.a12;

    return 0;
}