Pagini recente » Cod sursa (job #555165) | Cod sursa (job #1444958) | Cod sursa (job #2494353) | Cod sursa (job #1457695) | Cod sursa (job #1891743)
#include <iostream>
#include <fstream>
#define mod 666013
using namespace std;
ifstream fin("kfib.in");
ofstream fout("kfib.out");
int K,res[2][2],cnst[2][2];
void multiply(int a[2][2], int b[2][2]) // a=a*b
{
int r[2][2];
for (int i=0; i<2; ++i)
for (int j=0; j<2; ++j)
{
r[i][j]=0;
for (int p=0; p<2; ++p)
r[i][j]+=(1LL*a[i][p]*b[p][j])%mod;
}
for (int i=0; i<2; ++i)
for (int j=0; j<2; ++j)
a[i][j]=r[i][j]%mod;
}
int main()
{
fin>>K;
// Init res
res[1][1]=1; // f0=0, f1=1, f2=1
// Init const
cnst[0][0]=0;
cnst[0][1]=cnst[1][0]=cnst[1][1]=1;
--K;
if (K==0) { fout<<0; return 0; }
while (K)
{
if (K%2==1)
{
--K;
multiply(res,cnst);
}
else
{
K/=2;
multiply(cnst,cnst);
}
}
fout<<res[1][1];
return 0;
}