Pagini recente » Cod sursa (job #2067739) | Cod sursa (job #3122359) | Cod sursa (job #493309) | Cod sursa (job #914738) | Cod sursa (job #2328841)
#include <fstream>
using namespace std;
ifstream fin( "iepuri.in" );
ofstream fout( "iepuri.out" );
const int MOD = 666013;
int init[4][4],mat[4][4],aux[4][4];
int x,y,z,A,B,C,n,N;
void Read()
{
fin>>x>>y>>z>>A>>B>>C>>n;
}
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()
{
fin>>N;
for(int i=1; i<=N; ++i)
{
Read();
init[1][1]=init[1][2]=init[2][2]=init[3][1]=0;
init[2][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*(x*mat[1][3])%MOD+1LL*(y*mat[2][3])%MOD+1LL*(z*mat[3][3])%MOD)%MOD<<"\n";
}
return 0;
}