Pagini recente » Cod sursa (job #3251232) | Cod sursa (job #2625155) | Cod sursa (job #2159882) | Cod sursa (job #1642273) | Cod sursa (job #1874748)
#include <fstream>
#include <algorithm>
using namespace std;
const int MOD = 666013;
ifstream cin("kfib.in");
ofstream cout("kfib.out");
void inm(int a[2][2], int b[2][2], int rez[2][2])
{
int aux[2][2];
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j)
{
long long sum = 0;
for (int k = 0; k < 2; ++k)
{
sum += 1LL * a[i][k] * b[k][j];
}
aux[i][j] = sum % MOD;
}
rez[0][0] = aux[0][0];
rez[0][1] = aux[0][1];
rez[1][0] = aux[1][0];
rez[1][1] = aux[1][1];
}
void putere(int a[2][2], int k, int rez[2][2])
{
if (k == 0)
{
rez[0][0] = 1;
rez[0][1] = 0;
rez[1][0] = 0;
rez[1][1] = 1;
}
else
{
if (k % 2 == 1)
{
putere(a, k - 1, rez);
inm(a, rez, rez);
}
else
{
putere(a, k / 2, rez);
inm(rez, rez, rez);
}
}
}
int main()
{
int a[2][2], rez[2][2];
a[0][0] = 0;
a[0][1] = 1;
a[1][0] = 1;
a[1][1] = 1;
int n;
cin >> n;
putere(a, n-2, rez);
cout << (rez[0][1] + rez[1][1]) % MOD << "\n";
return 0;
}