Pagini recente » Cod sursa (job #373694) | Cod sursa (job #2486515) | Cod sursa (job #533659) | Cod sursa (job #2612215) | Cod sursa (job #2326884)
#include <fstream>
using namespace std;
ifstream fin( "iepuri.in" );
ofstream fout( "iepuri.out" );
const int MOD = 666013;
int nr_tasks;
int x, y, z, A, B, C;
int N;
int init[4][4];
int aux[4][4];
int mat[4][4];
void Do();
void Read()
{
fin >> nr_tasks;
for( int i = 1; i <= nr_tasks; ++i )
{
fin >> x >> y >> z >> A >> B >> C >> N;
Do();
}
fin.close();
fout.close();
}
void Mat_exp( int pow )
{
if( pow <= 1 ) return;
Mat_exp( pow / 2 );
for( int i = 1; i <= 3; ++i )
for( int j = 1; j <= 3; ++j )
{
aux[i][j] = 0;
for( int J = 1, I = 1; J <= 3; ++J, ++I )
aux[i][j] += ( 1LL * mat[i][J] * mat[I][j] ) % MOD;
aux[i][j] %= MOD;
}
if( pow % 2 )
{
for( int i = 1; i <= 3; ++i )
for( int j = 1; j <= 3; ++j )
{
mat[i][j] = 0;
for( int J = 1, I = 1; J <= 3; ++J, ++I )
mat[i][j] += ( 1LL * aux[i][J] * init[I][j] ) % MOD;
mat[i][j] %= MOD;
}
}
else
{
for( int i = 1; i <= 3; ++i )
for( int j = 1; j <= 3; ++j )
mat[i][j] = aux[i][j];
}
}
void PrintMat()
{
for( int i = 1; i <= 3; ++i )
{
for( int j = 1; j <= 3; ++j )
fout << mat[i][j] << ' ';
fout << '\n';
}
fout << '\n';
}
void Do()
{
init[1][3] = C;
init[2][3] = B;
init[3][3] = A;
init[2][1] = 1;
init[3][2] = 1;
for( int i = 1; i <= 3; ++i )
for( int j = 1; j <= 3; ++j )
mat[i][j] = init[i][j];
Mat_exp( N - 2 );
int ans = (( 1ll * x * mat[1][3] ) % MOD + ( 1ll * y * mat[2][3] ) % MOD + ( 1ll * z * mat[3][3] ) % MOD ) % MOD;
fout << ans << '\n';
}
int main()
{
Read();
Do();
return 0;
}