Pagini recente » Cod sursa (job #1412877) | Cod sursa (job #2250684) | Cod sursa (job #2928371) | Cod sursa (job #1713133) | Cod sursa (job #844834)
Cod sursa(job #844834)
# include <cstdio>
const char *FIN = "iepuri.in", *FOU = "iepuri.out" ;
const int MOD = 666013;
int Mat[3][3], M[3][3] ;
int X, Y, Z, A, B, C, N, T ;
inline void mult ( int A[3][3], int B[3][3] ) {
int C[3][3] ;
for ( int i = 0; i < 3; ++i ) {
for ( int j = 0; j < 3; ++j ) {
C[i][j] = 0 ;
for ( int k = 0; k < 3; ++k ) {
C[i][j] += 1LL * A[i][k] * B[k][j] % MOD ;
C[i][j] %= MOD ;
}
}
}
for ( int i = 0; i < 3; ++i ) {
for ( int j = 0; j < 3; ++j ) {
A[i][j] = C[i][j] ;
}
}
}
inline void powr ( int P, int M[3][3] ) {
for ( ; P ; P >>= 1 ) {
if ( P & 1 ) {
mult ( M, Mat ) ;
}
mult ( Mat, Mat ) ;
}
}
void solve ( void ){
Mat[0][0] = A, Mat[0][1] = B, Mat[0][2] = C ;
Mat[1][0] = 1, Mat[1][1] = 0, Mat[1][2] = 0 ;
Mat[2][0] = 0, Mat[2][1] = 1, Mat[2][2] = 0 ;
for ( int i = 0; i < 3; ++i ) {
for ( int j = 0; j < 3; ++j ) {
M[i][j] = i == j ? 1 : 0 ;
}
}
powr ( N - 2, M ) ;
printf ( "%lld\n", ( 1LL * M[0][0] * Z % MOD + 1LL * M[0][1] * Y % MOD + 1LL * M[0][2] * X % MOD ) % MOD ) ;
}
int main ( void ) {
freopen ( FIN, "r", stdin ) ;
freopen ( FOU, "w", stdout ) ;
for ( scanf ( "%d", &T ) ; T ; --T ) {
scanf ( "%d %d %d %d %d %d %d", &X, &Y, &Z, &A, &B, &C, &N ) ;
solve () ;
}
}