Pagini recente » Cod sursa (job #202519) | Cod sursa (job #1034428) | Cod sursa (job #1760341) | Cod sursa (job #143060) | Cod sursa (job #2488843)
#include <fstream>
#define MOD 666013
using namespace std;
ifstream f("kfib.in");
ofstream g("kfib.out");
int i,j,n;
struct matrix{
long long int mat[4][4];
};
const matrix null={
{{0,0,0},
{0,1,0},
{0,0,1}}
};
const matrix initmat={
{{0,0,0},
{0,1,1},
{0,1,0}}
};
matrix inmultire( matrix a, matrix b ){
matrix rez;
rez.mat[1][1]=(a.mat[1][1]*b.mat[1][1]+a.mat[1][2]*b.mat[2][1])%MOD;
rez.mat[1][2]=(a.mat[1][1]*b.mat[1][2]+a.mat[1][2]*b.mat[2][2])%MOD;
rez.mat[2][1]=(a.mat[2][1]*b.mat[1][1]+a.mat[2][2]*b.mat[2][1])%MOD;
rez.mat[2][2]=(a.mat[2][1]*b.mat[1][2]+a.mat[2][2]*b.mat[2][2])%MOD;
return rez;
}
matrix ridicare( matrix k,int n ){
if(n==0) return null;
else
if(n%2==1) return inmultire(k,ridicare(inmultire(k,k),n/2));
else return ridicare(inmultire(k,k),n/2);
}
int main()
{
f>>n;
g<<ridicare(initmat,n).mat[1][2]<<' ';
return 0;
}