Pagini recente » Cod sursa (job #241383) | Cod sursa (job #2205091) | Cod sursa (job #1567966) | Cod sursa (job #870132) | Cod sursa (job #589570)
Cod sursa(job #589570)
# include <fstream>
# define mod 666013
using namespace std;
ifstream f("kfib.in");
ofstream g("kfib.out");
int Z[2][2], M[2][2] ;
int N ;
inline void mult ( int A[2][2], int B[2][2] )
{
int C[2][2] ;
for ( int i = 0; i < 2; ++i )
{
for ( int j = 0; j < 2; ++j )
{
C[i][j] = 0 ;
for ( int k = 0; k < 2; ++k )
{
C[i][j] += (long long) ( A[i][k] * B[k][j]) % mod ;
}
}
}
for ( int i = 0; i < 2; ++i )
{
for ( int j = 0; j < 2; ++j )
{
A[i][j] = C[i][j] ;
}
}
}
inline void powr ( int P, int M[2][2] )
{
M[0][0] = M[1][1] = 1 ;
while(P > 0)
{
if(P % 2 != 0)
mult ( M, Z ) ;
mult ( Z, Z ) ;
P = P / 2;
}
}
int main ( void )
{
f>>N;
Z[0][0] = 0, Z[0][1] = 1 ;
Z[1][0] = 1, Z[1][1] = 1 ;
powr ( N - 1, M ) ;
//fprintf ( fopen ( FOU, "w" ) , "%d", M[1][1] ) ;
g<<M[1][1];
return 0;
}