Pagini recente » Cod sursa (job #187278) | Cod sursa (job #2906171) | Cod sursa (job #1470010) | Cod sursa (job #2133413) | Cod sursa (job #1829205)
#include <bits/stdc++.h>
#define MOD 666013
using namespace std;
ifstream fin("kfib.in");
ofstream fout("kfib.out");
int k,p[3][3],a[3][3];
void Produs(int a[3][3],int b[3][3],int c[3][3])
{
int i,j,k;
for(i=1;i<=2;i++)
for(j=1;j<=2;j++)
{
c[i][j]=0;
for(k=1;k<=2;k++)
c[i][j]=(c[i][j]+1LL*a[i][k]*b[k][j])%MOD;
}
}
void Copy(int a[3][3],int b[3][3])
{
int i,j;
for(i=1;i<=2;i++)
for(j=1;j<=2;j++)
a[i][j]=b[i][j];
}
void LogP(int a[3][3],int n)
{
int c[3][3];
p[1][1]=p[2][2]=1;
p[1][2]=p[2][1]=0;
while(n>0)
{
if(n%2==1)
{
Produs(p,a,c);
Copy(p,c);
}
n/=2;
Produs(a,a,c);
Copy(a,c);
}
}
int main()
{
fin>>k;
fin.close();
a[1][1]=0;
a[1][2]=a[2][1]=a[2][2]=1;
LogP(a,k-1);
fout<<p[2][2]<<"\n";
fout.close();
return 0;
}