Pagini recente » Cod sursa (job #2912394) | Cod sursa (job #2222564) | Cod sursa (job #153516) | Cod sursa (job #144743) | Cod sursa (job #2328840)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int MOD=666013;
int N,x,y,z,A,B,C;
int mat[4][4], aux[4][4], init[4][4];
void Quick_exp(int pow)
{
if(pow<=1)
return;
Quick_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]=aux[i][j];
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] * init[I][j]) % MOD;
aux[i][j] %= MOD;
}
}
for(int i=1 ; i<=3; ++i)
for(int j=1; j<=3; ++j)
mat[i][j]=aux[i][j];
}
int main()
{
int p;
fin>>p;
for(int k=1; k<=p; ++k)
{
fin >> x>> y>> z>> A >>B >>C >> N;
init[2][1]=1;
init[3][2]=1;
init[1][3]=C;
init[2][3]=B;
init[3][3]=A;
for( int i=1; i<=3; ++i)
for( int j=1; j<=3; ++j)
mat[i][j]=init[i][j];
Quick_exp( N-2 );
fout<< 1LL*( 1LL*x*mat[1][3]%MOD + 1LL*y*mat[2][3]%MOD + 1LL*z*mat[3][3]%MOD ) % MOD<<"\n";
}
return 0;
}