Pagini recente » Cod sursa (job #156570) | Cod sursa (job #641189)
Cod sursa(job #641189)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("kib.in");
ofstream fout("kfib.out");
const int MOD = 666013;
void mult(int A[][2],int B[][2],int C[][2])
{
for(int i = 0;i < 2;++i)
for(int j = 0; j < 2; ++j)
for(int k = 0 ;k < 2;++k)
C[i][j] = (C[i][j] + 1LL* A[i][k] * B[k][j])%MOD;
}
int fibo(int p)
{
int D[2][2] , aux[2][2] , sol[2][2];
D[0][0] = D[0][1] = D[1][0] = 1; D[1][1] = 0;
memcpy(sol,D,sizeof(D));
for(;p;p>>=1)
{
if(p & 1) { p--;
memset(aux,0,sizeof(aux));
mult(sol,D,aux);
memcpy(sol,aux,sizeof(aux));
}
memset(aux,0,sizeof(aux));
mult(D,D,aux);
memcpy(D,aux,sizeof(aux));
}
return sol[1][0];
}
int main()
{
int N;
fin>>N;
fout<<fibo(N-1)<<'\n';
return 0;
}