Pagini recente » Cod sursa (job #3347579) | Cod sursa (job #958062) | Cod sursa (job #865060) | Cod sursa (job #255164) | Cod sursa (job #3346428)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int MOD = 666013;
int q;
int a,b,c,x1,x2,x3,n;
struct Matrix {
long long mat[3][3];
// Constructor care initializeaza matricea cu 0 automat
Matrix() {
memset(mat, 0, sizeof(mat));
}
};
Matrix inmult(Matrix X, Matrix Y){
Matrix Z;
for(int i = 0; i < 3; ++i){
for(int j = 0; j < 3; ++j){
for(int k = 0; k < 3; ++k){
Z.mat[i][j] += (X.mat[i][k] % MOD * Y.mat[k][j] % MOD) % MOD;
Z.mat[i][j] %= MOD;
}
}
}
return Z;
}
void fe(){
Matrix A;
A.mat[0][0] = 0; A.mat[0][1] = 1; A.mat[0][2] = 0;
A.mat[1][0] = 0; A.mat[1][1] = 0; A.mat[1][2] = 1;
A.mat[2][0] = c; A.mat[2][1] = b; A.mat[2][2] = a;
Matrix ans;
ans.mat[0][0] = 1; ans.mat[0][1] = 0; ans.mat[0][2] = 0;
ans.mat[1][0] = 0; ans.mat[1][1] = 1; ans.mat[1][2] = 0;
ans.mat[2][0] = 0; ans.mat[2][1] = 0; ans.mat[2][2] = 1;
int e = n;
while(e > 0){
if(e & 1){
ans = inmult(ans, A);
}
A = inmult(A, A);
e = e >> 1;
}
int X[3] = {x1, x2, x3};
long long rez = 0;
for(int j = 0; j < 3; ++j){
rez += (ans.mat[0][j] % MOD * X[j] % MOD) % MOD;
rez %= MOD;
}
fout << rez << "\n";
}
int main(){
fin >> q;
for(int i = 0; i < q; ++i){
fin >> x1 >> x2 >> x3 >> a >> b >> c >> n;
fe();
}
}