Cod sursa(job #941997)

Utilizator heracleRadu Muntean heracle Data 20 aprilie 2013 13:57:10
Problema Al k-lea termen Fibonacci Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>

using namespace std;

ifstream in ("kfib.in");
ofstream out ("kfib.out");
const int R=666013;

long long a[2][2];

void produs()
{
    int aux[2][2];
    aux[0][0]=(a[0][0]*a[0][0]+a[0][1]*a[1][0])%R;
    aux[0][1]=(a[0][0]*a[0][1]+a[0][1]*a[1][0])%R;
    aux[1][0]=(a[1][0]*a[0][0]+a[1][1]*a[1][0])%R;
    aux[1][1]=(a[1][0]*a[0][1]+a[1][1]*a[1][1])%R;
    for(int i=0;i<=1;i++)
        for(int j=0;j<=1;j++)
            a[i][j]=aux[i][j];

}
void putere(long long n)
{
    if(n==1)
        return;
    if(n%2==1)
    {
        produs();
    }

    putere(n/2);
    return;
}
int main()
{
    int n;
    in>>n;
    a[0][0]=1;
    a[0][1]=1;
    a[1][0]=1;
    putere(n-1);
    out<<a[0][0];

    return 0;
}