Pagini recente » Cod sursa (job #2913419) | Cod sursa (job #581515) | Cod sursa (job #1989651) | Cod sursa (job #1863723) | Cod sursa (job #1562404)
#include <iostream>
#include <fstream>
#define MOD 666013
#define ll long long
using namespace std;
ifstream f("kfib.in");
ofstream g("kfib.out");
long long a[3][3],b[3][3],c[3][3];
int i,k;
void Inm_mat( ll a[][3], ll b[][3], ll c[][3])
{
int i,j,k;
c[1][1]=0,c[1][2]=0,c[2][1]=0,c[2][2]=0;
for (i=1;i<=2;i++)
for(j=1;j<=2;j++)
for(k=1;k<=2;k++)
c[i][j]=(c[i][j]+(a[i][k]*b[k][j])%MOD)%MOD;
}
void copymat(ll a[][3], ll c[][3])
{
a[1][1]=c[1][1],a[1][2]=c[1][2],a[2][1]=c[2][1],a[2][2]=c[2][2];
}
int main()
{
f>>k;
if (k==0) g<<0;
else
{
a[1][2]=1;
a[2][1]=1;
a[2][2]=1;
b[1][1]=1;
b[2][2]=1;
for(i=0;(1<<i)<=(k-1);i++)
{
if (((1<<i) & (k-1)) > 0)
{
Inm_mat(a,b,c);
copymat(b,c);
}
Inm_mat(a,a,c);
copymat(a,c);
}
g<<b[2][2];
}
return 0;
}