Pagini recente » Cod sursa (job #2157899) | Cod sursa (job #1499734) | Cod sursa (job #803361) | Cod sursa (job #1607472) | Cod sursa (job #2665673)
#include <iostream>
#include <fstream>
#define MOD 666013
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
int n, m[3][3], x, y, z, a, b, c;
void copiaza(int a[][3], int b[][3]) {
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
a[i][j] = b[i][j];
}
void inmulteste(int a[][3], int b[][3], int rez[][3]) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 3; k++) {
rez[i][j] = ((rez[i][j] % MOD) + (1ll * (a[i][k] % MOD) * (b[k][j] % MOD)) % MOD) % MOD;
}
}
}
}
void afisare(int a[][3]) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++)
cout << a[i][j] << " ";
cout << endl;
}
}
void rezolvare() {
m[0][0] = 0;
m[0][1] = 0;
m[0][2] = c;
m[1][0] = 1;
m[1][1] = 0;
m[1][2] = b;
m[2][0] = 0;
m[2][1] = 1;
m[2][2] = a;
int r[3][3];
r[0][0] = 1;
r[0][1] = 0;
r[0][2] = 0;
r[1][0] = 0;
r[1][1] = 1;
r[1][2] = 0;
r[2][0] = 0;
r[2][1] = 0;
r[2][2] = 1;
while (n) {
if (n % 2 == 1) {
int aux_r[3][3] = {0};
inmulteste(m, r, aux_r);
copiaza(r, aux_r);
}
int aux_m[3][3] = {0};
inmulteste(m, m, aux_m);
copiaza(m, aux_m);
n = n / 2;
}
///afisare(m);
g << ((1ll * x * r[0][2]) % MOD + (1ll * y * r[1][2]) % MOD + (1ll * z * r[2][2]) % MOD) % MOD<<endl;
}
int main() {
int t;
f >> t;
cout<<t;
for (int i = 0; i < t; i++) {
f >> x >> y >> z >> a >> b >> c >> n;
n-=2;
rezolvare();
}
return 0;
}