Pagini recente » Cod sursa (job #2921996) | Borderou de evaluare (job #1292862) | Cod sursa (job #1696610) | Cod sursa (job #310573) | Cod sursa (job #3234970)
#include <fstream>
#define mod 666013
using namespace std;
ifstream fin ("kfib.in");
ofstream fout ("kfib.out");
int n,p;
int mat[2][2]= {{1,0},{0,0}},fib[2][2]= {{1,1},{1,0}};
void prod (int a[2][2],int b[2][2])
{
int c[2][2]= {{0,0},{0,0}};
for (int i=0; i<2; i++)
{
for (int j=0; j<2; j++)
{
int sum=0;
for (int g=0; g<2; g++)
sum=(sum+1ll*a[g][j]*b[i][g])%mod;
c[i][j]=sum;
}
}
for (int i=0; i<2; i++)
{
for (int j=0; j<2; j++)
a[i][j]=c[i][j];
}
}
int main()
{
fin>>n;
if (n==0)
{
fout<<0;
return 0;
}
if (n==1)
{
fout<<1;
return 0;
}
n--;
for (p=0; (1<<p)<=n; p++)
{
if ((n>>p)&1)
prod (mat,fib);
prod (fib,fib);
}
fout<<mat[0][0];
return 0;
}