Pagini recente » Cod sursa (job #2400566) | Cod sursa (job #1709097) | Cod sursa (job #2008157) | Cod sursa (job #943674) | Cod sursa (job #381010)
Cod sursa(job #381010)
using namespace std;
#include<fstream>
#include<cstring>
#define MOD 666013
int K, rez[4][4], c[4][4];
void mul(int a[][4], int b[][4]) // a = a * b
{
int r[4][4],i,j,k;
memset(r,0,sizeof(r));
for(i=1; i<=2;++i)
for(j=1;j<=2;++j)
for(k=1; k<=2;++k)
r[i][j] = (r[i][j] + 1LL * a[i][k] * b[k][j]) %MOD;
for(i=1;i<=2;++i)
for(j=1;j<=2;++j)
a[i][j] = r[i][j] % MOD;
}
int main()
{
ifstream f("kfib.in");
ofstream g("kfib.out");
f>>K;
c[1][1] = 0; c[1][2] = c[2][2] = c[2][1] = 1;
rez[1][1] = rez[2][2] = 1;
--K;
if(K == 0) { g<<"0\n"; return 0; }
while(K)
{
if(K&1)
{
--K;
mul(rez,c);
}
else
{
K>>=1;
mul(c,c);
}
}
g<<rez[2][2]<<"\n";
return 0;
}