Cod sursa(job #1425901)

Utilizator pitbull007Hurmuzache Ciprian pitbull007 Data 28 aprilie 2015 13:49:46
Problema Al k-lea termen Fibonacci Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.9 kb
#include <stdio.h>
#include <stdlib.h>
FILE *fin,*fout;

int** buildConstantMatrix() {
    int i;
    int **ct = (int **)malloc(2*sizeof(int*));
    for(i=0;i<2;i++) {
        ct[i] = (int *)malloc(2*(sizeof(int*)));
    }
    ct[0][0]=0;
    ct[0][1]=1;
    ct[1][0]=1;
    ct[1][1]=1;

    return ct;
}

void computeFibonacci(long long int n) {
    long long int  fib[1][2];
    int **ct = buildConstantMatrix();
    int i,j,sum;
    fib[0][0]=1;
    fib[0][1]=1;

    n=n-2;
    while(n--) {
        for(i=0;i<2;i++) {
            sum=0;
            for(j=0;j<2;j++) {
                sum += fib[0][j]*ct[j][i];
            }
        }
            fib[0][0]=fib[0][1];
            fib[0][1]=sum;
    }
    fprintf(fout,"%lld",(fib[0][1])%666013);
}

int main(void)
{
    long long int n;
    fin=fopen("kfib.in","r");
    fout=fopen("kfib.out","w");
    fscanf(fin,"%lld",&n);
    computeFibonacci(n);

    return 0;
}