Pagini recente » Cod sursa (job #2729248) | Cod sursa (job #3125993) | Cod sursa (job #3214382) | Cod sursa (job #2773741) | Cod sursa (job #2219603)
#include <fstream>
using namespace std;
ifstream fin("kfib.in");
ofstream fout("kfib.out");
int K;
int sol[2][2], f[2][2];
const int mod = 666013;
void Inmultire(int a[2][2], int f[2][2]);
void Putere(int k);
int main()
{
fin >> K;
sol[0][0] = f[0][0] = 0;
sol[0][1] = f[0][1] = sol[1][0] = f[1][0] = sol[1][1] = f[1][1] = 1;
Putere(K);
fout << sol[0][0];
return 0;
}
void Inmultire(int a[2][2], int f[2][2])
{
long long aux[2][2];
for ( int i = 0; i < 2; ++i )
for ( int j = 0; j < 2; ++j )
{
aux[i][j] = 0;
for ( int k = 0; k < 2; ++k )
aux[i][j] += 1LL * a[i][k] * f[k][j];
}
for ( int i = 0; i < 2; ++i )
for ( int j = 0; j < 2; ++j )
a[i][j] = (int)(aux[i][j] % mod);
};
void Putere(int k)
{
if ( !k ) return;
if ( k % 2 )
Inmultire(sol, f);
Inmultire(f, f);
Putere(k / 2);
};