Pagini recente » Cod sursa (job #550892) | Cod sursa (job #296101) | Cod sursa (job #1121406) | Cod sursa (job #2256077) | Cod sursa (job #3222067)
#include <bits/stdc++.h>
using namespace std;
const int inf = 10;
int s[3];
int A,B,C;
const int MOD = 666013;
int n;
struct Matrix{
int size;
vector<vector<int>> v;
Matrix(int _size) : size(_size){
v = vector<vector<int>>(size, vector<int>(size));
for(int i=0;i<size;i++) v[i][i] = 1;
}
Matrix(int _size,vector<vector<int>> _v) : size(_size){
v = vector<vector<int>>(size, vector<int>(size));
for(int i=0;i<size;i++)
for(int j=0;j<size;j++)
v[i][j] = _v[i][j];
}
Matrix(int _size, int val) : size(_size){
v = vector<vector<int>>(size, vector<int>(size));
for(int i=0;i<size;i++)
for(int j=0;j<size;j++)
v[i][j] = val;
}
Matrix operator * (const Matrix &other){
Matrix ans(size,0);
for(int i=0;i<size;i++)
for(int j=0;j<size;j++)
for(int k=0;k<size;k++)
ans.v[i][j] = (ans.v[i][j] + this->v[i][k] * other.v[k][j])%MOD;
return ans;
}
};
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
#define cin fin
#define cout fout
int main(){
int t;
cin>>t;
while(t--){
cin>>s[0]>>s[1]>>s[2];
cin>>A>>B>>C;
cin>>n;
Matrix a(3,{{0,1,0},{0,0,1},{C,B,A}}), ans(3);
while(n){
if(n&1) ans = ans * a;
a = a * a;
n>>=1;
}
int answer = 0;
for(int i=0;i<3;i++)
answer = (answer + s[i] * ans.v[0][i]);
cout<<answer<<'\n';
}
return 0;
}