Pagini recente » Cod sursa (job #1366277) | Cod sursa (job #1869874) | Cod sursa (job #336328) | Cod sursa (job #181541) | Cod sursa (job #2593631)
#include <iostream>
#include <fstream>
std::ifstream fin ( "iepuri.in" );
std::ofstream fout ( "iepuri.out" );
const int MOD = 666013;
long long a[4][4];
long long rez[4][4];
void product ( long long dest[4][4], long long p[4][4] ) {
long long aux[4][4];
for ( int x = 1; x <= 3; ++x )
for ( int y = 1; y <= 3; ++y )
aux[x][y] = 0;
for ( int k = 1; k <= 3; ++k )
for ( int x = 1; x <= 3; ++x )
for ( int y = 1; y <= 3; ++y )
aux[k][x] += dest[k][y] * p[y][x] % MOD;
for ( int x = 1; x <= 3; ++x )
for ( int y = 1; y <= 3; ++y )
dest[x][y] = aux[x][y] % MOD;
}
void matPower ( int power ) {
while ( power ) {
if ( power % 2 == 1 )
product ( rez, a );
product ( a, a );
power /= 2;
}
}
int main () {
int T;
fin >> T;
for ( int i = 1; i <= T; ++i ) {
int X, Y, Z, A, B, C, N;
fin >> X >> Y >> Z >> A >> B >> C >> N;
for ( int x = 1; x <= 3; ++x )
for ( int y = 1; y <= 3; ++y )
a[x][y] = rez[x][y] = 0;
a[1][3] = C;
a[2][1] = 1;
a[2][3] = B;
a[3][2] = 1;
a[3][3] = A;
rez[1][1] = rez[2][2] = rez[3][3] = 1;
matPower ( N - 2 );
long long ans = ( X * rez[1][3] % MOD + Y * rez[2][3] % MOD + Z * rez[3][3] % MOD ) % MOD;
fout << ans << '\n';
}
fin.close();
fout.close();
return 0;
}