Pagini recente » Cod sursa (job #1487178) | Cod sursa (job #773427) | Cod sursa (job #878174) | Cod sursa (job #1820702) | Cod sursa (job #3311435)
#include <fstream>
#define MOD 666013
using namespace std;
ifstream fin("kfib.in");
ofstream fout("kfib.out");
long long K,Z[2][2],Ans[2][2];
void inmultire_matrice(long long m1[2][2], long long m2[2][2])
{
long long sol[2][2];
for(int i=0; i<2; i++)
{
for(int j=0; j<2; j++)
{
sol[i][j]=0;
for(int k=0; k<2; k++)
{
sol[i][j]=(sol[i][j]+(m1[i][k]*m2[k][j])%MOD)%MOD;
}
}
}
for(int i=0; i<2; i++)
{
for(int j=0; j<2; j++)
{
m1[i][j]=sol[i][j];
}
}
}
void fast_exp(long long exp)
{
Ans[0][0]=0;
Ans[0][1]=Ans[1][0]=Ans[1][1]=1;
while(exp>0)
{
if(exp%2==1)
{
inmultire_matrice(Ans,Z);
}
inmultire_matrice(Z,Z);
exp=exp/2;
}
}
int main()
{
fin>>K;
Z[0][0]=0;
Z[0][1]=Z[1][0]=Z[1][1]=1;
fast_exp(K-1);
fout<< Ans[1][0] << "\n";
return 0;
}