Pagini recente » Cod sursa (job #138068) | Cod sursa (job #529086) | Cod sursa (job #1828879) | Cod sursa (job #2476643) | Cod sursa (job #2018334)
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
typedef long long mat[3][3];
const long long mod = 666013;
long long A, B, C, x, y, z, n, s;
void inm(mat a, mat b, mat c) {
int i, j, k;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++) {
c[i][j] = 0;
for (k = 0; k < 3; k++)
c[i][j] = (c[i][j]+(a[i][k] * b[k][j])%mod)%mod;
}
}
void copii(mat a, mat b) {
int i, j;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
a[i][j] = b[i][j];
}
long long rid() {
mat sol = {0}, a = {0}, tmp = {0};
sol[0][0] = sol[1][1] = sol[2][2] = 1;
a[0][1] = a[1][2] = 1, a[2][0] = C, a[2][1] = B, a[2][2] = A;
n -= 2;
while (n) {
if (n&1) {
inm(sol, a, tmp);
copii(sol, tmp);
}
inm(a, a, tmp);
copii(a, tmp);
n >>= 1;
}
return ((x*sol[2][0])%mod + (y*sol[2][1])%mod + (z*sol[2][2])%mod)%mod;
}
int main() {
f >> s;
while (s--) {
f >> x >> y >> z >> A >> B >> C >> n;
g << rid() << '\n';
}
return 0;
}