Pagini recente » Cod sursa (job #922438) | Cod sursa (job #219402) | Cod sursa (job #1700862) | Cod sursa (job #2329581) | Cod sursa (job #1367391)
#include <stdio.h>
#define P 666013
int H[3][3], M[3][3];
void inmultire(int A[3][3], int B[3][3])
{
int aux[3][3];
int i, j, k;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++) {
aux[i][j] = 0;
for (k = 0; k < 3; k++) {
aux[i][j] += (A[i][k] * B[k][j]) % P;
aux[i][j] %= P;
}
}
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
H[i][j] = aux[i][j];
}
void pow_matrix(int n)
{
if (n == 1) {
return;
}
if (n % 2) {
inmultire(H, H);
inmultire(H, M);
} else
inmultire(H, H);
pow_matrix(n / 2);
}
int main(void)
{
FILE *f_in = freopen("iepuri.in", "rt", stdin);
FILE *f_out = freopen("iepuri.out", "wt", stdout);
int T, X, Y, Z, A, B, C, N;
scanf("%d", &T);
int i, j;
M[1][0] = 1;
M[2][1] = 1;
while (T--) {
scanf("%d %d %d %d %d %d %d", &X, &Y, &Z, &A, &B, &C, &N);
M[0][0] = A;
M[0][1] = B;
M[0][2] = C;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
H[i][j] = M[i][j];
pow_matrix(N - 2);
printf("%d\n", H[0][0] * Z + H[0][1] * Y + H[0][2] * X);
}
}