Pagini recente » Cod sursa (job #1020099) | Cod sursa (job #1067190) | Cod sursa (job #39677) | Cod sursa (job #2797710) | Cod sursa (job #2538913)
#include <bits/stdc++.h>
#define mod 666013
using namespace std;
ifstream fin("kfib.in");
ofstream fout("kfib.out");
long long k,sol;
long long a[2][2]={{1,1},{1,0}}, r[2][2]={{1,0},{0,1}}, b[2][2];
void inmultire(long long a[2][2],long long b[2][2],long long c[2][2]) {
for (long long i=0;i<2;i++)
for (long long j=0;j<2;j++) {
c[i][j]=0;
for (long long k=0;k<2;k++) {
c[i][j]+=a[i][k]*b[k][j];
c[i][j]%=mod;
}
}
}
void copiere(long long a[2][2],long long b[2][2]) {
for (long long i=0;i<2;i++)
for (long long j=0;j<2;j++)
a[i][j]=b[i][j];
}
int main() {
fin>>k;
if (k<=2) {
fout<<1;
return 0;
}
k-=2;
while (k) {
if (k%2==1) {
inmultire(r,a,b);
copiere(r,b);
}
inmultire(a,a,b);
copiere(a,b);
k/=2;
}
sol=r[0][0]+r[0][1];
fout<<sol%mod;
return 0;
}