Pagini recente » Cod sursa (job #2262614) | Cod sursa (job #2106347) | Cod sursa (job #1295442) | Cod sursa (job #145760) | Cod sursa (job #1385255)
#include <fstream>
using namespace std;
ifstream fin ("iepuri.in");
ofstream fout ("iepuri.out");
const long long mod = 666013;
long long n, a, b, c, x, y, z, t;
void atrib(long long a[][3], int x) {
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 3; ++j)
a[i][j] = x;
}
void atrib(long long a[][3], long long b[][3]) {
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 3; ++j)
a[i][j] = b[i][j];
}
void multiply(long long r[][3], long long a[][3], long long b[][3]) {
for (int k = 0; k < 3; ++k)
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 3; ++j)
r[i][j] = (r[i][j] + a[i][k] * b[k][j]) % mod;
}
int main() {
fin >> t;
while (t--) {
fin >> x >> y >> z >> a >> b >> c >> n;
long long sol[3][3] = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}, aux[3][3] = {{0, 0, c}, {1, 0, b}, {0, 1, a}};
n -= 2;
for (long long i = 1; i <= n; i <<= 1) {
if (i & n) {
long long now[3][3];
atrib(now, 0);
multiply(now, sol, aux);
atrib(sol, now);
}
long long now[3][3];
atrib(now, 0);
multiply(now, aux, aux);
atrib(aux, now);
}
fout << (x * sol[0][2] + y * sol[1][2] + z * sol[2][2]) % mod << "\n";
}
}