Pagini recente » Cod sursa (job #500466) | Cod sursa (job #2603559) | Cod sursa (job #300633) | Cod sursa (job #773594) | Cod sursa (job #347305)
Cod sursa(job #347305)
#include <cstdio>
#define FIN "iepuri.in"
#define FOUT "iepuri.out"
#define MOD 666013
int a, b, c, x, y, z, n, M[3][3], R[3][3];
void mul(int A[3][3], int 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] += A[i][k] * B[k][j];
for (i = 0; i < 3; ++ i)
for (j = 0; j < 3; ++ j)
A[i][j] = C[i][j] % MOD;
}
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("%d\n", (x * R[0][2] + y * R[1][2] + z * R[2][2]) % MOD);
}
}