Pagini recente » Cod sursa (job #1879501) | Cod sursa (job #1556242) | Cod sursa (job #2250987) | Cod sursa (job #256621) | Cod sursa (job #2671751)
#include <iostream>
#include <fstream>
#define nl '\n'
using namespace std;
ifstream f ( "iepuri.in" );
ofstream g ( "iepuri.out" );
const int MOD = 666013;
int X, Y, Z, A, B, C, N;
int ans[3][3], mat[3][3];
void init()
{
for ( int i = 0; i < 3; i++ )
for ( int j = 0; j < 3; j++ )
if ( i == j )
ans[i][j] = 1;
else ans[i][j] = 0;
mat[0][0] = mat[0][1] = mat[1][1] = mat[2][0] = 0;
mat[1][0] = mat[2][1] = 1;
mat[0][2] = C;
mat[1][2] = B;
mat[2][2] = A;
}
void multMat ( int A[][3], int B[][3] )
{
static 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] = ( C[i][j] + 1LL * A[i][k] * B[k][j] ) % MOD;
}
for ( int i = 0; i < 3; i++ )
for ( int j = 0; j < 3; j++ )
A[i][j] = C[i][j];
}
void powlg ( int p )
{
init();
while ( p )
{
if ( p & 1 )
{
p--;
multMat ( ans, mat );
}
else
{
p >>= 1;
multMat ( mat, mat );
}
}
}
int main()
{
int T;
f >> T;
while ( T-- )
{
f >> X >> Y >> Z >> A >> B >> C >> N;
powlg ( N - 2 );
int sum=(1LL*X*ans[0][2]+1LL*Y*ans[1][2]+1LL*Z*ans[2][2])%MOD;
g<<sum<<nl;
}
return 0;
}