Cod sursa(job #2243718)

Utilizator ParketPatrick Josephs Parket Data 21 septembrie 2018 11:40:03
Problema Al k-lea termen Fibonacci Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 1.01 kb
#include <stdio.h>
#define daniel main
#define doamne_ajuta return
#define patriarhul int
#define MOD 666013
patriarhul sol[2][2]={{1,0},{0,1}}, n;
patriarhul a[2][2]={ {0,1}, {1,1} };
patriarhul miron_cristea(patriarhul a[2][2], patriarhul b[2][2])
{
    patriarhul c[2][2]={0}, i, j, k;
    for(i=0; i<2; i++)
        for(j=0; j<2; j++)
            for(k=0; k<2; k++)
                c[i][j] = (c[i][j] + (1LL * a[i][k] * b[k][j])%MOD) %MOD;

    for(i=0; i<2; i++)
        for(j=0; j<2; j++)
            a[i][j]=c[i][j];
        doamne_ajuta 0;
}
patriarhul nicodim_munteanu(patriarhul n)
{
    while(n>0){
        if(n&1)
            miron_cristea(sol,a);
        miron_cristea(a,a);
        n>>=1;
    }
    doamne_ajuta 0;
}
patriarhul daniel()
{
    FILE *f1, *f2;
    f1=fopen("kfib.in","r");
    patriarhul q, i;
    fscanf(f1,"%d",&q);
    nicodim_munteanu(q-1);
    f2=fopen("kfib.out","w");
    fprintf(f2,"%d",sol[1][1]);
    fclose(f1);
    fclose(f2);
    doamne_ajuta 0;
}