Pagini recente » Cod sursa (job #2421086) | Cod sursa (job #1810159) | Cod sursa (job #2323441) | Cod sursa (job #2818650) | Cod sursa (job #2218365)
#include <fstream>
using namespace std;
ifstream cin ("iepuri.in");
ofstream cout ("iepuri.out");
const int MOD = 666013;
int t, x, y, z, a, b, c, n;
int mat[4][4], sol[4][4], tmp[4][4];
void mult_mat(int a[][4], int b[][4], int c[][4]) {
for(int i = 1; i <= 3; i++) {
for(int j = 1; j <= 3; j++)
c[i][j] = 0;
}
for(int i = 1; i <= 3; i++) {
for(int j = 1; j <= 3; j++) {
for(int k = 1; k <= 3; k++)
c[i][j] = (c[i][j] + 1LL * a[i][k] * b[k][j]) % MOD;
}
}
for(int i = 1; i <= 3; i++) {
for(int j = 1; j <= 3; j++)
a[i][j] = c[i][j];
}
}
void lgput(int v[][4], int p) {
for(int i = 0; (1 << i) <= p; i++) {
if((1 << i) & p)
mult_mat(sol, v, tmp);
mult_mat(v, v, tmp);
}
}
int main() {
cin >> t;
for(; t; t--) {
cin >> x >> y >> z >> a >> b >> c >> n;
mat[1][1] = mat[1][2] = mat[2][2] = mat[3][1] = 0;
mat[2][1] = mat[3][2] = 1;
mat[1][3] = c;
mat[2][3] = b;
mat[3][3] = a;
for(int i = 1; i <= 3; i++) {
for(int j = 1; j <= 3; j++)
sol[i][j] = mat[i][j];
}
lgput(mat, n - 3);
cout << (1LL * sol[1][3] * x + 1LL * sol[2][3] * y + 1LL * sol[3][3] * z) % MOD << "\n";
}
return 0;
}