Pagini recente » Cod sursa (job #561745) | Cod sursa (job #2482011) | Cod sursa (job #385400) | Cod sursa (job #1259354) | Cod sursa (job #1145735)
#include<fstream>
#include<cstring>
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
const int MOD = 666013;
int T,X,Y,Z,A,B,C,N;
struct mat{
int a[5][5];
mat(){
memset(a,0,sizeof(a));
}
mat(int t){
a[1][1]= 1,a[1][2]= 0,a[1][3]= 0;
a[2][1]= 0,a[2][2]= 1,a[2][3]= 0;
a[3][1]= 0,a[3][2]= 0,a[3][3]= 1;
}
mat(int _a,int _b,int _c){
a[1][1]=_a,a[1][2]=_b,a[1][3]=_c;
a[2][1]= 1,a[2][2]= 0,a[2][3]= 0;
a[3][1]= 0,a[3][2]= 1,a[3][3]= 0;
}
mat operator * (mat P){
mat S;
for(int i=1;i<=3;i++){
for(int j=1;j<=3;j++){
for(int k=1;k<=3;k++){
S.a[i][j]+=(1LL*a[i][k]*P.a[k][j])%MOD;
}
}
}
return S;
}
void print(){for(int i=1;i<=3;i++){for(int j=1;j<=3;j++)out<<a[i][j]<<' ';out<<'\n';}}
};
mat pow(mat b,unsigned int e){
mat S=mat(0);
for(int i=0;(1<<i)<=e;i++){
if(e&(1<<i)){
S=S*b;
}
b=b*b;
}
return S;
}
int main(){
in>>T;
for(;T;--T){
in>>X>>Y>>Z;
in>>A>>B>>C;
in>>N;
mat R=pow(mat(A,B,C),N-2);
int Ans=( (1LL*R.a[1][1]*Z)%MOD + (1LL*R.a[1][2]*Y)%MOD + (1LL*R.a[1][3]*X)%MOD )%MOD;
out<<Ans<<'\n';
}
return 0;
}