Pagini recente » Cod sursa (job #2578968) | Rating Ciacareanu Cristian (cristi22991) | Cod sursa (job #1627247) | Cod sursa (job #173927) | Cod sursa (job #2175444)
#include <iostream>
#include <fstream>
using namespace std;
const int mod = 666013;
void ProdMat(int a[2][2], int b[2][2], int c[2][2])
{
int a1[2][2], b1[2][2];
for(int i=0; i<2; ++i)
for(int j=0; j<2; ++j)
a1[i][j] = a[i][j];
for(int i=0; i<2; ++i)
for(int j=0; j<2; ++j)
b1[i][j] = b[i][j];
for(int i=0; i<2; ++i)
for(int j=0; j<2; ++j)
{
c[i][j] = 0;
for(int k=0; k<2; ++k)
c[i][j] = (1LL * c[i][j] + 1LL * a1[i][k] * b1[k][j])%mod;
}
}
int LgPut(int k)
{
int rez[2][2]={{0,1}, {1,1}};
int mat[2][2]={{0,1}, {1,1}};
do
{
if(k%2)
ProdMat(rez,mat,rez);
ProdMat(mat,mat,mat);
k/=2;
}while(k);
return rez[0][0];
}
int main()
{
ifstream fin("kfib.in");
ofstream fout("kfib.out");
int N;
fin >> N;
fout << LgPut(N);
return 0;
}