Pagini recente » Cod sursa (job #2227238) | Cod sursa (job #1471746) | Cod sursa (job #779891) | Cod sursa (job #1432) | Cod sursa (job #1520485)
#include <cstdio>
#include <cstring>
using namespace std;
#define Mod 666013
FILE *f = fopen ( "kfib.in", "r" );
FILE *g = fopen ( "kfib.out", "w" );
typedef int Matrix[2][2];
void MultMat ( Matrix &A, Matrix &B, Matrix &C ){
memset ( C, 0, sizeof ( C ) );
for ( int i = 0; i <= 1; ++i ){
for ( int j = 0; j <= 1; ++j ){
for ( int k = 0; k <= 1; ++k ){
C[i][j] = ( C[i][j] + 1LL * A[i][k] * B[k][j] ) % Mod;
}
}
}
memcpy( A, C, sizeof(C) );
}
int aux[2][2], Rez[2][2] = { { 0, 1 } };
void LgPow ( int N ){
int A[2][2] = { {0, 1},
{1, 1} };
while ( N ){
if ( N & 1 )
MultMat(Rez, A, aux);
N >>= 1;
MultMat( A, A, aux );
}
}
int main(){
int N;
fscanf ( f, "%d", &N );
LgPow( N-1 );
fprintf ( g, "%d", Rez[0][1] );
return 0;
}