Mai intai trebuie sa te autentifici.
Cod sursa(job #465099)
| Utilizator | Data | 23 iunie 2010 12:21:56 | |
|---|---|---|---|
| Problema | Al k-lea termen Fibonacci | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.96 kb |
#include <stdio.h>
using namespace std;
#define MOD 666013
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] % MOD;
c[i][j] = 0;
}
}
void afisare ()
{
printf ("%lld %lld", fib[1][1], fib[1][2]);
printf ("\n");
}
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);
//afisare ();
}
fprintf (g,"%lld", fib[1][2]);
fclose(g);
fclose(f);
return 0;
}
