Pagini recente » Cod sursa (job #1454242) | Cod sursa (job #2628966) | Cod sursa (job #2863757) | Cod sursa (job #2328805) | Cod sursa (job #2981121)
#include <fstream>
#include <iostream>
#define MOD 666013
std::ifstream fin("iepuri.in");
std::ofstream fout("iepuri.out");
class matrix{
public:
long long int container[3][3] = {0};
matrix(){}
matrix(int A, int B, int C){
container[0][1] = container[1][2] = 1;
container[2][0] = A;
container[2][1] = B;
container[2][2] = C;
}
matrix operator* (const matrix& Obj){
matrix res;
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
res.container[i][j] = 0;
for(int z = 0; z < 3; z++){
res.container[i][j] += (container[i][z] * Obj.container[z][j])%MOD;
res.container[i][j] %= MOD;
}
}
}
return res;
}
inline int result(int x, int y, int z){
long long int rez = (container[2][0]*x) % MOD + (container[2][1]*y) % MOD + (container[2][2]*z) % MOD;
return (rez % MOD);
}
friend std::ostream& operator <<(std::ostream& fout, const matrix& Obj){
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
fout << Obj.container[i][j] << " ";
}
fout << "\n";
}
return fout;
}
};
matrix power(matrix& A , int n){
matrix res;//unity matrix
res.container[0][0] = res.container[1][1] = res.container[2][2] = 1;
while(n){
if(n%2 == 1){
res = res * A;
}
A = A * A;
n /= 2;
}
return res;
}
int main(){
int T, x, y, z, A, B, C, n;
fin >> T;
for(int i=0; i<T; i++){
fin >> x >> y >> z >> A >> B >> C >> n;
matrix mat(C, B, A), res_mat;
res_mat = power(mat, n-2);
fout << res_mat.result(x, y, z) << "\n";
}
}