Pagini recente » Profil alina.laura | Cod sursa (job #3213318) | Cod sursa (job #1268091) | Cod sursa (job #2195260) | Cod sursa (job #1715345)
#include <fstream>
#include <cstring>
#define MOD 666013
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
long long a[5][5], p[5][5], aux[5][5];
int n , x , y , z , A , B , C , T;
void inmulteste() {
memset(aux , 0 , sizeof(aux));
for (int i = 1; i < 4; ++i) {
for (int k = 1; k < 4; ++k) {
for (int j = 1; j < 4; ++j) {
aux[i][k] = (aux[i][k] + p[i][j] * a[j][k]) % MOD;
}
}
}
for (int i = 1; i < 4; ++i) {
for (int j = 1; j < 4; ++j) {
p[i][j] = aux[i][j];
}
}
}
void ridica() {
memset(aux , 0 , sizeof(aux));
for (int i = 1; i < 4; ++i) {
for (int k = 1; k < 4; ++k) {
for (int j = 1; j < 4; ++j) {
aux[i][k] = (aux[i][k] + a[i][j] * a[j][k]) % MOD;
}
}
}
for (int i = 1; i < 4; ++i)
for (int j = 1; j < 4; ++j)
a[i][j] = aux[i][j];
}
int main() {
f >> T;
while(T--) {
memset(a , 0 , sizeof(a));
memset(p , 0 , sizeof(p));
f >> x >> y >> z >> A >> B >> C >> n;
n -= 2;
a[1][1] = 0, a[1][2] = 0, a[1][3] = C;
a[2][1] = 1, a[2][2] = 0, a[2][3] = B;
a[3][1] = 0, a[3][2] = 1, a[3][3] = A;
p[1][1] = x;
p[1][2] = y;
p[1][3] = z;
while (n) {
if (n % 2) {
inmulteste();
--n;
}
else {
ridica();
n /= 2;
}
}
g << p[1][3] % MOD << '\n';
}
return 0;
}