Pagini recente » Cod sursa (job #2228088) | Cod sursa (job #837159) | Cod sursa (job #1055927) | Cod sursa (job #99435) | Cod sursa (job #854347)
Cod sursa(job #854347)
#include <cstdio>
#include <cstdlib>
#define mod 666013
int X , Y , Z , A , B , C , N , n ;
long long M [ 3 ][ 3 ] , rez [ 3 ][ 3 ] , asd [ 3 ][ 3 ] ;
void copy ( long long A [ ][ 3 ] , long long B [ ][ 3 ] )
{
for ( int i = 0 ; i <= 2 ; i++ )
for ( int j = 0 ; j <= 2 ; j++ )
A [ i ][ j ] = B [ i ][ j ] ;
}
void mult ( long long A [ ][ 3 ] , long long B [ ][ 3 ] , long long C [ ][ 3 ] )
{
for ( int i = 0 ; i <= 2 ; i++ )
for ( int j = 0 ; j <= 2 ; j++ )
A [ i ][ j ] = 0 ;
for ( int i = 0 ; i <= 2 ; i++ )
for ( int j = 0 ; j <= 2 ; j++ )
for ( int k = 0 ; k <= 2 ; k++ )
A [ i ][ j ] = ( A [ i ][ j ] + B [ i ][ k ] * C [ k ][ j ] ) % mod ;
}
void aaa ()
{
long long aux [ 3 ][ 3 ] ;
M [ 0 ][ 0 ] = M [ 0 ][ 2 ] = M [ 1 ][ 0 ] = M [ 1 ][ 1 ] = 0 ;
M [ 0 ][ 1 ] = M [ 1 ][ 2 ] = 1 ;
M [ 2 ][ 0 ] = C ;
M [ 2 ][ 1 ] = B ;
M [ 2 ][ 2 ] = A ;
for ( int i = 0 ; i <= 2 ; i++ )
for ( int j = 0 ; j <= 2 ; j++ )
rez [ i ][ j ] = 0 ;
rez [ 1 ][ 1 ] = rez [ 2 ][ 2 ] = rez [ 0 ][ 0 ] = 1 ;
int p = N ;
while ( p )
{
if ( p & 1 )
{
mult ( aux , rez , M ) ;
copy ( rez , aux ) ;
}
p >>= 1;
mult ( aux , M , M ) ;
copy ( M , aux ) ;
}
}
int main ()
{
FILE *fin , *fout ;
fin = fopen ( "iepuri.in" , "rt" ) ;
fout = fopen ( "iepuri.out" , "wt" ) ;
fscanf ( fin , "%d" , &n ) ;
for ( int i = 1 ; i <= n ; i++ )
{
fscanf ( fin , "%d %d %d %d %d %d %d " , &X , &Y , &Z , &A , &B , &C , &N ) ;
aaa () ;
fprintf ( fout , "%lld\n" , ( X * rez [ 0 ][ 0 ] + Y * rez [ 0 ][ 1 ] + Z * rez [ 0 ][ 2 ] ) % mod ) ;
}
fclose ( fin ) ;
fclose ( fout ) ;
return 0 ;
}