Pagini recente » Cod sursa (job #1485895) | Cod sursa (job #1221311) | Cod sursa (job #2567430) | Cod sursa (job #1629709) | Cod sursa (job #1575017)
#include <cstdio>
const int MOD = 666013;
int N, X, Y, Z, A, B, C, T;
int Answer[3][3], Auxiliary[3][3], Constant[3][3];
inline void mul( int A[3][3], int B[3][3], int C[3][3] ) {
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] = (C[i][j] + A[i][k] * 1LL * B[k][j]) % MOD;
}}
return;
}
inline void cop( int A[3][3], int B[3][3] ) {
for( int i = 0; i <= 2; i ++ )
for( int j = 0; j <= 2; j ++ )
A[i][j] = B[i][j];
return;
}
int main () {
freopen( "iepuri.in" , "r", stdin );
freopen( "iepuri.out", "w", stdout );
scanf( "%d", &T );
for( int i = 1; i <= T; i ++ ) {
scanf( "%d %d %d", &X, &Y, &Z );
scanf( "%d %d %d", &A, &B, &C );
scanf( "%d", &N ); N -= 2;
Constant[0][0] = A; Constant[0][1] = B; Constant[0][2] = C;
Constant[1][0] = 1; Constant[1][1] = 0; Constant[1][2] = 0;
Constant[2][0] = 0; Constant[2][1] = 1; Constant[2][2] = 0;
Answer[0][0] = 1; Answer[0][1] = 0; Answer[0][2] = 0;
Answer[1][0] = 0; Answer[1][1] = 1; Answer[1][2] = 0;
Answer[2][0] = 0; Answer[2][1] = 0; Answer[2][2] = 1;
while( N ) {
if( N % 2 ) {
mul( Answer, Constant, Auxiliary );
cop( Answer, Auxiliary );
}
mul( Constant, Constant, Auxiliary );
cop( Constant, Auxiliary );
N /= 2;
}
printf( "%d\n", (Answer[0][0] * 1LL * Z + Answer[0][1] * 1LL * Y + Answer[0][2] * 1LL * X) % MOD );
}
return 0;
}