Pagini recente » Cod sursa (job #982108) | Cod sursa (job #1481504) | Cod sursa (job #2403047) | Cod sursa (job #2537481) | Cod sursa (job #3198336)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin ("kfib.in");
ofstream fout ("kfib.out");
int Sol[3][3], M[3][3];
const int MOD = 666013;
void Multiply (int A[][3], int B[][3])
{
long long C[3][3];
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
{
C[i][j] = 0;
for (int k = 0; k < 2; k++)
{
C[i][j] = (C[i][j] + 1LL * A[i][k] * B[k][j]) % MOD;
}
}
memcpy(A, C, sizeof(A));
}
int main()
{
int k;
fin >> k;
Sol[0][1] = 1;
M[0][1]=M[1][1]=M[1][0]=1;
while (k)
{
if (k % 2 == 1)
Multiply(Sol, M);
Multiply(M,M);
k = k / 2;
}
fout << Sol[0][0] << "\n";
fin.close();
fout.close();
return 0;
}