Cod sursa(job #781598)

Utilizator my666013Test Here my666013 Data 24 august 2012 18:20:40
Problema Al k-lea termen Fibonacci Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>
#include <cstring>
#define Mod 666013

int f[2][2] = {{0,1},{1,1}}, a[2][2] = {{0,1},{1,1}} ,n;

void produs(int f[2][2],int a[2][2])
{
    int x[2][2]; memset(x,0,sizeof(x));
    for(int i=0;i<2;i++)
    for(int j=0;j<2;j++)
    for(int k=0;k<2;k++)
        x[i][j] = (x[i][j] + (long long)f[i][k] * a[k][j]) % Mod;
    for(int i=0;i<2;i++)
    for(int j=0;j<2;j++) f[i][j] = x[i][j];
}

void pow(int n){
    if(n > 1)
    {
        pow(n/2);
        if(n%2)
        {
            produs(f,f);
            produs(f,a);
        } else
            produs(f,f);
    }
}

int main(){

    freopen("kfib.in","r",stdin);
    freopen("kfib.out","w",stdout);

    scanf("%d",&n);

    pow(n+1);

    printf("%d\n",f[0][0]);

    return 0;
}