Pagini recente » Cod sursa (job #1181289) | Cod sursa (job #154828) | Cod sursa (job #878843) | Cod sursa (job #981389) | Cod sursa (job #2456783)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("kfib.in");
ofstream fout("kfib.out");
#define MOD 666013
int K;
long long baseCase[2][2] = { {0, 1},
{1, 1} };
long long Result[2][2] = { {0, 1},
{0, 0} };
void Multiply(long long A[2][2], long long B[2][2]) {
long long C[2][2];
memset(C, 0, sizeof(C));
for (int i = 0; i <= 1; i++)
for (int j = 0; j <= 1; j++)
for (int k = 0; k <= 1; k++)
C[i][j] = (C[i][j] + A[i][k] * B[k][j]) % MOD;
memcpy(A, C, sizeof(C));
}
long long logPower(int K) {
while (K) {
if (K & 1)
Multiply(Result, baseCase);
K >>= 1;
Multiply(baseCase, baseCase);
}
return Result[0][0];
}
int main() {
ios_base::sync_with_stdio(false);
fin.tie(NULL);
fout.tie(NULL);
fin >> K;
fout << logPower(K);
}