Pagini recente » Cod sursa (job #1990999) | Cod sursa (job #906703) | Cod sursa (job #1319728) | Cod sursa (job #662390) | Cod sursa (job #2429069)
#include <bits/stdc++.h>
#define MOD 666013
using namespace std;
ifstream fin("kfib.in");
ofstream fout("kfib.out");
typedef long long ll;
ll Mn[5][5];
ll M1[5][5];
void inm(ll A[5][5], ll B[5][5])
{
ll C[5][5];
for(int i=1;i<=2;++i)
for(int j=1;j<=2;++j) C[i][j]=0;
for(int i=1;i<=2;++i)
{
for(int j=1;j<=2;++j)
{
for(int z=1;z<=2;++z)
C[i][j]+=A[i][z]*B[z][j],C[i][j]%=MOD;
}
}
for(int i=1;i<=2;++i)
{
for(int j=1;j<=2;++j)
A[i][j]=C[i][j];
}
}
void lgput(int b)
{
while(b)
{
while(b%2==0) {
inm(M1,M1);
b/=2;
}
if(b%2) inm(Mn,M1),b--;
}
}
int main()
{
int n;
fin>>n;
M1[1][1]=0;
M1[1][2]=1;
M1[2][1]=1;
M1[2][2]=1;
Mn[1][1]=1;
Mn[1][2]=0;
Mn[2][1]=0;
Mn[2][2]=1;
lgput(n-1);
fout<<Mn[2][2]<<"\n";
return 0;
}