Pagini recente » Cod sursa (job #390479) | Cod sursa (job #259609) | Cod sursa (job #2975159) | Cod sursa (job #988681) | Cod sursa (job #1319881)
#include <iostream>
#include <fstream>
#include <vector>
#define mod 66013
using namespace std;
ifstream fin("kfib.in");
ofstream fout("kfib.out");
int k;
int M[3][3],S[3][3];
void mult(int A[][3], int B[][3])
{
int C[3][3];
int i,j,k;
for(i=0;i<=1;i++)
for(j=0;j<=1;j++)
C[i][j]=0
for(i=0;i<=1;i++)
for(j=0;j<=1;j++)
for(k=0;k<=1;k++)
{
C[i][j]=C[i][j]+1LL*A[i][k]*B[k][j];
C[i][j]=C[i][j]%mod;
}
for(i=0;i<=1;i++)
for(j=0;j<=1;j++)
B[i][j]=C[i][j];
}
void ridicare(int p)
{
while(p)
{if(p%2==1)
mult(M,S);
mult(S,S);
p=p/2;
}
}
int main()
{
fin>>k;
M[0][0]=0;
M[0][1]=1;
M[1][0]=1;
M[1][1]=1;
ridicare(k-1);
fout<<S[1][1];
return 1;
}