Pagini recente » Cod sursa (job #1194042) | Cod sursa (job #2057676) | Cod sursa (job #1875918) | Cod sursa (job #127246) | Cod sursa (job #2266919)
#include <iostream>
#include <fstream>
#define MOD 666013
using namespace std;
ifstream f("kfib.in");
ofstream g("kfib.out");
int n;
long long p[2][2],r[2][2],sol[2][2];
void inmultire(long long m1[2][2],long long m2[2][2])
{
int i,j,k,m3[2][2];
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
m3[i][j]=0;
for(k=0;k<2;k++)
{
m3[i][j]=(m3[i][j]+m1[i][k]*m2[k][j])%MOD;
}
}
}
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
m1[i][j]=m3[i][j];
}
}
}
void ridicare()
{
while(n>0)
{
if(n%2==1)
{
inmultire(sol,p);
}
inmultire(p,p);
n=n/2;
}
}
int main()
{
f>>n;
p[0][0]=0;
p[0][1]=1;
p[1][0]=1;
p[1][1]=1;
r[0][0]=0;
r[0][1]=1;
r[1][0]=0;
r[1][1]=0;
sol[0][0]=1;
sol[0][1]=0;
sol[1][0]=0;
sol[1][1]=1;
n=n-1;
ridicare();
inmultire(r,sol);
g<<r[0][1];
return 0;
}