Pagini recente » Cod sursa (job #1983216) | Cod sursa (job #2469470) | Cod sursa (job #2837283) | Cod sursa (job #2105013) | Cod sursa (job #1396691)
#include <fstream>
using namespace std;
ifstream in("kfib.in");
ofstream out("kfib.out");
#define MOD 666013
long long int ans[2][2]={ { 0 , 1 } , { 1 , 1} },mat[2][2]={ { 1 , 0 } , { 0 , 1 } },i,j,n,k;
void _Multiply( long long int A[][2], long long int B[][2] )
{
long long int C[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;
A[ 0 ][ 0 ] = C[ 0 ][ 0 ];
A[ 0 ][ 1 ] = C[ 0 ][ 1 ];
A[ 1 ][ 0 ] = C[ 1 ][ 0 ];
A[ 1 ][ 1 ] = C[ 1 ][ 1 ];
}
int main()
{
in>>k;
++k;
while( k > 1 )
{
if( k % 2 == 0 )
{
k /= 2;
_Multiply( ans , ans );
}
else
{
--k;
_Multiply( mat , ans );
}
}
_Multiply( ans , mat );
out<<ans[ 0 ][ 0 ];
return 0;
}