Pagini recente » Cod sursa (job #1770090) | Cod sursa (job #1383105) | Cod sursa (job #339495) | Cod sursa (job #2056281) | Cod sursa (job #1883836)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("kfib.in");
ofstream fout("kfib.out");
const int MOD = 666013;
int n;
struct matrix{
long long m[2][2];
void operator *= (const matrix &a){
matrix c;
for(int i = 0; i < 2; ++i)
for(int j = 0; j < 2; ++j){
c.m[i][j] = 0;
for(int k = 0; k < 2; ++k)
c.m[i][j] += m[k][j] * a.m[i][k];
c.m[i][j] %= MOD;
}
for(int i = 0; i < 2; ++i)
for(int j = 0; j < 2; ++j)
m[i][j] = c.m[i][j];
}
};
matrix r = {0, 1, 1, 1}, t = {1, 0, 0, 1};
int main()
{
fin >> n;
for(int s = 1; s <= n; s <<= 1){
if(n & s)
t *= r;
r *= r;
}
fout << t.m[0][1];
return 0;
}