Pagini recente » Cod sursa (job #358579) | Cod sursa (job #561815) | Cod sursa (job #2407908) | Cod sursa (job #2687506) | Cod sursa (job #347306)
Cod sursa(job #347306)
#include <cstdio>
#define FIN "iepuri.in"
#define FOUT "iepuri.out"
#define MOD 666013
int a, b, c, x, y, z, n;
long long M[3][3], R[3][3];
void mul(long long A[3][3], long long B[3][3])
{
int i, j, k, C[3][3];
for (i = 0; i < 3; ++ i)
for (j = 0 ; j < 3; ++ j)
for (k = 0, C[i][j] = 0; k < 3; ++ k)
C[i][j] = 1LL * (C[i][j] + (A[i][k] * B[k][j]) % MOD) % MOD;
for (i = 0; i < 3; ++ i)
for (j = 0; j < 3; ++ j)
A[i][j] = C[i][j];
}
int main()
{
int p, i, t, j, k;
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
scanf("%d", &t);
for (i = 1; i <= t; ++i)
{
scanf("%d%d%d%d%d%d%d", &x, &y, &z, &a, &b, &c, &n);
M[0][0] = M[0][1] = M[1][1] = M[2][0] = 0;
M[1][0] = M[2][1] = 1;
M[0][2] = c; M[1][2] = b; M[2][2] = a;
for (j = 0; j < 3; ++ j)
for (k = 0; k < 3; ++ k)
if (j != k)
R[j][k] = 0;
else
R[j][k] = 1;
for (p = n - 2; p ; p /= 2)
{
if (p & 1)
mul(R, M);
mul(M, M);
}
printf("%lld\n", 1LL * ((x * R[0][2]) % MOD + (y * R[1][2]) % MOD + (z * R[2][2]) % MOD ) % MOD);
}
}