Pagini recente » Cod sursa (job #2066903) | Cod sursa (job #1348973) | Cod sursa (job #3285960) | Cod sursa (job #2116822) | Cod sursa (job #2392654)
#include <bits/stdc++.h>
#define mod 666013
using namespace std;
ifstream f("kfib.in");
ofstream g("kfib.out");
long long n,matr_neutra[3][3];
void inmultire(long long A[3][3],long long B[3][3])
{
long long i,j,k,C[3][3];
for(i=1;i<=2;i++)
for(j=1;j<=2;j++)
C[i][j]=0;
for(i=1;i<=2;i++)
for(j=1;j<=2;j++)
for(k=1;k<=2;k++)
C[i][j]+=(A[i][k]*B[k][j])%mod;
for(i=1;i<=2;i++)
for(j=1;j<=2;j++)
A[i][j]=C[i][j]%mod;
}
void putere(long long sol[3][3],long long k)
{
while(k)
{
if(k%2==1){inmultire(sol,matr_neutra);k--;}
else {inmultire(matr_neutra,matr_neutra);k=k/2;}
}
}
long long sol[3][3],a[3][3];
int main()
{
f>>n;
a[1][1]=0;
a[1][2]=1;
a[2][1]=0;
a[2][2]=0;
matr_neutra[1][1]=0;
matr_neutra[1][2]=1;
matr_neutra[2][1]=1;
matr_neutra[2][2]=1;
sol[1][1]=1;
sol[2][2]=1;
putere(sol,n);
inmultire(a,sol);
g<<a[1][1]%mod;
return 0;
}