Pagini recente » Cod sursa (job #3250923) | Cod sursa (job #662210) | Cod sursa (job #281795) | Cod sursa (job #2396986) | Cod sursa (job #3158208)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
long long v[3][3], putere[3][3], cop[3][3], mod = 666013;
void mxm(long long a[3][3], long long b[3][3]){
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
cop[i][j] = 0;
for(int k = 0; k < 3; k++){
cop[i][j] = (cop[i][j] + (a[i][k] * b[k][j]) % mod) % mod;
}
}
}
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
a[i][j] = cop[i][j];
}
}
}
void pow(int n, long long putere[3][3]){
while(n > 0){
if(n % 2 == 0){
mxm(putere, putere);
n /= 2;
}
else{
mxm(v, putere);
n--;
}
}
}
int main()
{
int n, i, j, k, t, a, b, c, x, y, z;
in >> t;
for(i = 0; i < t; i++){
in >> x >> y >> z >> a >> b >> c >> n;
for(j = 0; j < 3; j++){
for(k = 0; k < 3; k++){
v[j][k] = putere[j][k] = 0;
}
}
putere[2][0] = c;
putere[2][1] = b;
putere[2][2] = a;
putere[0][1] = putere[1][2] = 1;
v[0][0] = v[1][1] = v[2][2] = 1;
pow(n - 2, putere);
out << ((v[2][0] * x) % mod + (v[2][1] * y) % mod + (v[2][2] * z) % mod) % mod << '\n';
}
return 0;
}