Pagini recente » Cod sursa (job #1660627) | Cod sursa (job #678007) | Cod sursa (job #2644977) | Cod sursa (job #2323844) | Cod sursa (job #2210967)
#include <bits/stdc++.h>
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
const long long modulo = 666013;
long long mat[4][4], sol[4][4], aux[4][4], start[4][4];
int main() {
int teste;
in >> teste;
while(teste --) {
memset(mat, 0, sizeof mat);
memset(sol, 0, sizeof sol);
memset(start, 0, sizeof start);
int x, y, z, a, b, c, n;
in >> x >> y >> z >> a >> b >> c >> n;
mat[1][2] = mat[2][3] = 1, mat[3][1] = c, mat[3][2] = b, mat[3][3] = a, sol[1][1] = 1, sol[2][2] = 1, sol[3][3] = 1;
start[1][1] = x, start[2][1] = y, start[3][1] = z;
n -= 2;
while(n) {
if(n % 2) {
memset(aux, 0, sizeof aux);
for(int i = 1; i <= 3; i ++)
for(int j = 1; j <= 3; j ++)
for(int k = 1; k <= 3; k ++)
aux[i][j] = (aux[i][j] + sol[i][k] * mat[k][j]) % modulo;
memcpy(sol, aux, sizeof aux);
}
memset(aux, 0, sizeof aux);
for(int i = 1; i <= 3; i ++)
for(int j = 1; j <= 3; j ++)
for(int k = 1; k <= 3; k ++)
aux[i][j] = (aux[i][j] + mat[i][k] * mat[k][j]) % modulo;
memcpy(mat, aux, sizeof aux);
n /= 2;
}
memset(aux, 0, sizeof aux);
for(int i = 1; i <= 3; i ++)
for(int j = 1; j <= 1; j ++)
for(int k = 1; k <= 3; k ++)
aux[i][j] = (aux[i][j] + sol[i][k] * start[k][j]) % modulo;
out << aux[3][1] << "\n";
}
return 0;
}