Pagini recente » Cod sursa (job #667738) | Cod sursa (job #1312573) | Cod sursa (job #1568284) | Cod sursa (job #2140347) | Cod sursa (job #2719131)
#include <bits/stdc++.h>
using namespace std;
const int MOD = 666013;
int f[3][3], a[3][3];
void produs(int p[3][3], int x[3][3], int y[3][3]) {
int aux[3][3];
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++) {
aux[i][j] = 0;
for (int k = 0; k < 3; k++)
aux[i][j] = ((long long)aux[i][j] + (long long)x[i][k] * y[k][j]) % MOD;
}
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
p[i][j] = aux[i][j];
}
void lgput(int n) {
while (n != 0) {
if (n % 2 != 0)
produs(f, f, a);
produs(a, a, a);
n /= 2;
}
}
int main() {
freopen ("iepuri.in", "r", stdin);
freopen ("iepuri.out", "w", stdout);
int n, X, Y, Z, A, B, C, teste;
scanf ("%d", &teste);
for (int t = 1; t <= teste; t++) {
scanf ("%d%d%d%d%d%d%d", &X, &Y, &Z, &A, &B, &C, &n);
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
a[i][j] = f[i][j] = 0;
f[0][0] = f[1][1] = f[2][2] = 1; ///f e initial I3
a[0][0] = A;
a[0][1] = B;
a[0][2] = C;
a[1][0] = a[2][1] = 1;
lgput(n - 2);
int val = ((long long)f[0][0] * Z + (long long)f[0][1] * Y + (long long)f[0][2] * X) % MOD;
printf ("%d\n", val);
}
return 0;
}