Cod sursa(job #465092)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 23 iunie 2010 12:10:48
Problema Al k-lea termen Fibonacci Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>
using namespace std;

long long fib[2][3], c[2][3];
int z[3][3];
long long K;
int  i, j, k;
int p;

void inmultire (long long a[2][3], int b[3][3])
{
    for (i=1; i<=1; ++i)
        for (j=1; j<=2; ++j)
            for (k=1; k<=2; ++k)
                c[i][k] += (a[i][j] * b[j][k]);
    for (i=1; i<=1; ++i)
        for (j=1; j<=2; ++j)
        {
            a[i][j] = c[i][j];
            c[i][j] = 0;
        }
}

int main ()
{
    FILE *f = fopen ("kfib.in","r");
    FILE *g = fopen ("kfib.out","w");
    fscanf (f,"%lld", &K);

    z[1][1] = 0;
    z[1][2] = z[2][1] = z[2][2] = 1;
    fib[1][1] = 0;
    fib[1][2] = 1;
    for (p=1; p<K; ++p)
    {
        inmultire (fib, z);
    }

    fprintf (g,"%lld", fib[1][2]);

    fclose(g);
    fclose(f);
    return 0;
}