Pagini recente » Cod sursa (job #2163882) | Cod sursa (job #1186520) | Cod sursa (job #936516) | Cod sursa (job #941966) | Cod sursa (job #2850626)
#include <fstream>
#define NMAX 3
#define MOD 666013
#define int long long
using namespace std;
int sol[NMAX + 1][NMAX + 1];
int aux[NMAX + 1][NMAX + 1];
void inmultire (int a[NMAX + 1][NMAX + 1], int b[NMAX + 1][NMAX + 1]){
int mat[NMAX + 1][NMAX + 1];
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++){
mat[i][j] = 0;
for (int t = 0; t < 3; t++)
mat[i][j] = (mat[i][j] + (1LL * a[i][t] * b[t][j])% MOD) % MOD;
}
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
a[i][j] = mat[i][j];
}
signed main(){
ifstream fin ("iepuri.in");
ofstream fout ("iepuri.out");
int q;
fin >> q;
while (q--){
int x, y, z, a, b, c, zi;
fin >> x >> y >> z >> a >> b >> c >> zi;
for (int i = 0; i < 3; i++) //prereset la mat
for (int j = 0; j < 3; j++)
aux[i][j] = sol[i][j] = 0;
aux[0][2] = c, aux[1][0] = 1, aux[1][2] = b, aux[2][1] = 1, aux[2][2] = a;
sol[0][0] = sol[1][1] = sol[2][2] = 1;
zi -= 2;
while (zi > 0){
if (zi % 2 == 1)
inmultire(sol, aux);
inmultire(aux, aux);
zi /= 2;
}
x = (x * sol[0][2] * 1LL) % MOD;
y = (y * sol[1][2] * 1LL) % MOD;
z = (z * sol[2][2] * 1LL) % MOD;
fout << (x + y + z) % MOD << "\n";
}
return 0;
}