Pagini recente » Cod sursa (job #2347139) | Cod sursa (job #2778851) | Cod sursa (job #1771810) | Cod sursa (job #2723104) | Cod sursa (job #2535908)
#include <iostream>
#include <fstream>
using namespace std;
const int MOD = 666013;
long long A[2][2] = { { 0, 1 }, { 1, 1 } };
long long B[2][2] = { { 0, 1 }, { 1, 1 } };
long long C[2][2];
void product( long long A[2][2], long long B[2][2] ) {
C[0][0] = ( A[0][0] * B[0][0] + A[0][1] * B[1][0] ) % MOD;
C[0][1] = ( A[0][0] * B[0][1] + A[0][1] * B[1][1] ) % MOD;
C[1][0] = ( A[1][0] * B[0][0] + A[1][1] * B[1][0] ) % MOD;
C[1][1] = ( A[1][0] * B[0][1] + A[1][1] * B[1][1] ) % MOD;
}
void copiere( long long A[2][2], long long B[2][2] ) {
int l, c;
for ( l = 0; l < 2; l ++ ) {
for ( c = 0; c < 2; c ++ )
A[l][c] = B[l][c];
}
}
void afisare( int A[2][2] ) {
int l, c;
for ( l = 0; l < 2; l ++ ) {
for ( c = 0; c < 2; c ++ )
cout << A[l][c] << ' ';
cout << '\n';
}
cout << '\n';
}
void exponentiere( int n ) {
while ( n > 0 ) {
if ( n % 2 == 1 ) {
product( A, B );
copiere( B, C );
}
n /= 2;
product( A, A );
copiere( A, C );
}
}
int main() {
ifstream fin( "kfib.in" );
ofstream fout( "kfib.out" );
int n;
fin >> n;
exponentiere( n - 1 );
fout << B[0][1];
return 0;
}