Cod sursa(job #465092)
#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;
}