Pagini recente » Cod sursa (job #3195360) | Cod sursa (job #1679822) | Cod sursa (job #2104644) | Cod sursa (job #677523) | Cod sursa (job #2636996)
#include <bits/stdc++.h>
#define newline '\n'
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
///**********************
const int MOD = 666013;
int n, x, y, z, a, b, c;
int ratiomat[4][4];
void multMat(int a[][4], int b[][4]) {
int r[4][4] = {};
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
for (int k = 0; k < 3; k++)
r[i][j] = (1LL * r[i][j] + a[i][k] * b[k][j]) % MOD;
for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) a[i][j] = r[i][j];
}
void powLog(int p) {
int r[4][4] = {
{1},
{0, 1},
{0, 0, 1}
};
while (p) {
if (p & 1)
multMat(r, ratiomat);
multMat(ratiomat, ratiomat);
p >>= 1;
}
for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) ratiomat[i][j] = r[i][j];
}
void solve() {
for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) ratiomat[i][j] = 0;
ratiomat[1][0] = ratiomat[2][1] = 1;
fin >> x >> y >> z >> a >> b >> c >> n;
int inimat[4][4] = {{x, y, z}};
ratiomat[0][2] = c;
ratiomat[1][2] = b;
ratiomat[2][2] = a;
powLog(n - 2);
multMat(inimat, ratiomat);
fout << inimat[0][2] << newline;
}
int main() {
int q;
for (fin >> q; q--;)
solve();//*/
fout.close();
return 0;
}