Pagini recente » Cod sursa (job #1840457) | Cod sursa (job #2175034) | Cod sursa (job #2232620) | Cod sursa (job #462604) | Cod sursa (job #3166450)
#include<fstream>
std::ifstream fin("kfib.in");
std::ofstream fout("kfib.out");
#define mod 666013
long long mat[2][2]={1, 1, 1, 0};
long long prod[2][2]={1, 0, 0, 1};
void multiplyMat(long long a[2][2], long long b[2][2])
{
long long aux[2][2];
for(int index=0; index<2; ++index)
for(int next=0; next<2; ++next)
{
long long s=0;
for(int k=0; k<2; ++k)
s=(s+(a[index][k]*b[k][next])%mod)%mod;
aux[index][next]=s;
}
for(int index=0; index<2; ++index)
for(int next=0; next<2; ++next)
a[index][next]=aux[index][next];
}
void put(int power)
{
while(power)
{
if(power%2)
multiplyMat(prod, mat);
multiplyMat(mat, mat);
power/=2;
}
}
int main()
{
int num;
fin>>num;
put(num-1);
fout<<(prod[0][0]+prod[0][1])%mod;
return 0;
}
//660634