Pagini recente » Cod sursa (job #1492519) | Cod sursa (job #245843) | Cod sursa (job #1390785) | Cod sursa (job #1935761) | Cod sursa (job #3313287)
#include <fstream>
using namespace std;
const int MOD = 666013;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
int t, X, Y, Z, A, B, C, N, mat[4][4], val[4][4], temp[4][4];
long long sol;
void init()
{
for(int i = 1; i < 4; ++i)
for(int j = 1; j < 4; ++j)
val[i][j] = (i == j);
mat[1][1] = 0, mat[1][2] = 1, mat[1][3] = 0;
mat[2][1] = 0, mat[2][2] = 0, mat[2][3] = 1;
mat[3][1] = C, mat[3][2] = B, mat[3][3] = A;
}
void mul(int a[4][4], int b[4][4])
{
for(int i = 1; i < 4; ++i)
for(int j = 1; j < 4; ++j)
temp[i][j] = 0;
for(int i = 1; i < 4; ++i)
for(int j = 1; j < 4; ++j)
for(int k = 1; k < 4; ++k)
temp[i][j] = (temp[i][j] + 1LL * a[i][k] * b[k][j]) % MOD;
for(int i = 1; i < 4; ++i)
for(int j = 1; j < 4; ++j)
a[i][j] = temp[i][j] % MOD;
}
void exp(int b)
{
while(b)
{
if(b & 1) mul(val, mat);
mul(mat, mat);
b >>= 1;
}
}
int main()
{
fin >> t;
while(t--)
{
fin >> X >> Y >> Z >> A >> B >> C >> N;
init();
exp(N);
sol = (long long)X * val[1][1] + Y * val[1][2] + Z * val[1][3];
fout << sol % MOD << "\n";
}
return 0;
}