Pagini recente » Cod sursa (job #2596674) | Cod sursa (job #2821431) | Cod sursa (job #2375741) | Cod sursa (job #1316396) | Cod sursa (job #2716285)
#include <fstream>
#include <cstring>
#define mod 666013
using namespace std;
long long sol[3][3];
long long z[3][3];
long long o[3][3];
long long n;
void copiere (long long a[3][3], long long b[3][3]) {
for (long long i=1;i<=2;i++) {
for (long long j=1;j<=2;j++) {
a[i][j]=b[i][j];
}
}
}
void inmulteste (long long sol[3][3], long long a[3][3], long long b[3][3]) {
for (long long i=1;i<=2;i++) {
for (long long j=1;j<=2;j++) {
sol[i][j]=0;
for (long long k=1;k<=2;k++) {
sol[i][j]+=a[i][k]*b[k][j];
sol[i][j]%=mod;
}
}
}
}
int main() {
ifstream fin("kfib.in");
ofstream fout("kfib.out");
fin>>n;
z[1][1]=0;
z[1][2]=1;
z[2][1]=1;
z[2][2]=1;
/// ridicareLaPutere(z,n);
long long sol[3][3];
long long aux[3][3];
copiere(sol,z);
n-=2;
while (n) {
if (n%2==1) {
copiere(aux,sol);
inmulteste(sol,aux,z);
}
copiere(aux,z);
inmulteste(z,aux,aux);
n/=2;
}
fout<<sol[2][2];
return 0;
}