Cod sursa(job #2060889)

Utilizator vladcoroian2001Vlad Coroian vladcoroian2001 Data 8 noiembrie 2017 19:19:53
Problema Al k-lea termen Fibonacci Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#define MOD 666013
using namespace std;
ifstream fi("kfib.in");
ofstream fo("kfib.out");
struct MATRIX {
long long x,y,z,t;
};
long long n;
MATRIX atrib(long long a,long long b,long long c,long long d)
{
    MATRIX A;
    A.x=a;
    A.y=b;
    A.z=c;
    A.t=d;
    return A;
}
MATRIX inm(MATRIX A,MATRIX B)
{
    return atrib((A.x*B.x+A.y*B.z)%MOD,(A.x*B.y+A.y*B.t)%MOD,(A.z*B.x+A.t*B.z)%MOD,(A.z*B.y+A.t*B.t)%MOD);
}
MATRIX power(MATRIX A,long long p)
{
    MATRIX JUM;
    if(p==1)
        return A;
    JUM=power(A,p/2);
    if(p%2==0)
        return inm(JUM,JUM);
    return inm(inm(JUM,JUM),A);
}
int main()
{
    fi>>n;
    fo<<power(atrib(0,1,1,1),n).z<<"\n";
    fi.close();
    fo.close();
    return 0;
}