Pagini recente » Cod sursa (job #2697329) | Cod sursa (job #2702077) | Cod sursa (job #2177307) | Cod sursa (job #3281181) | Cod sursa (job #3229673)
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int MOD = 666013;
long long int test_cases,x,y,z,A,B,C,n;
struct mat33{
long long int m00,m01,m02;
long long int m10,m11,m12;
long long int m20,m21,m22;
};
struct mat31{
long long int m00,m10,m20;
};
mat33 produs3(mat33 a ,mat33 b){
mat33 c;
c.m00 = ((a.m00*b.m00)%MOD + (a.m01*b.m10)%MOD + (a.m02*b.m20)%MOD)%MOD;
c.m01 = ((a.m00*b.m01)%MOD + (a.m01*b.m11)%MOD + (a.m02*b.m21)%MOD)%MOD;
c.m02 = ((a.m00*b.m02)%MOD + (a.m01*b.m12)%MOD + (a.m02*b.m22)%MOD)%MOD;
c.m10 = ((a.m10*b.m00)%MOD + (a.m11*b.m10)%MOD + (a.m12*b.m20)%MOD)%MOD;
c.m11 = ((a.m10*b.m01)%MOD + (a.m11*b.m11)%MOD + (a.m12*b.m21)%MOD)%MOD;
c.m12 = ((a.m10*b.m02)%MOD + (a.m11*b.m12)%MOD + (a.m12*b.m22)%MOD)%MOD;
c.m20 = ((a.m20*b.m00)%MOD + (a.m21*b.m10)%MOD + (a.m22*b.m20)%MOD)%MOD;
c.m21 = ((a.m20*b.m01)%MOD + (a.m21*b.m11)%MOD + (a.m22*b.m21)%MOD)%MOD;
c.m22 = ((a.m20*b.m02)%MOD + (a.m21*b.m12)%MOD + (a.m22*b.m22)%MOD)%MOD;
return c;
};
mat31 produs1(mat33 a,mat31 b){
mat31 c;
c.m00 = ((a.m00*b.m00)%MOD + (a.m01*b.m10)%MOD + (a.m02*b.m20)%MOD)%MOD;
c.m10 = ((a.m10*b.m00)%MOD + (a.m11*b.m10)%MOD + (a.m12*b.m20)%MOD)%MOD;
c.m20 = ((a.m20*b.m00)%MOD + (a.m21*b.m10)%MOD + (a.m22*b.m20)%MOD)%MOD;
return c;
};
mat33 fast_pow(mat33 a,int n){
mat33 p = a;
n--;
while(n){
if(n%2 == 1){
p = produs3(p,a);
};
a = produs3(a,a);
n/=2;
};
return p;
}
void solve(){
fin >> x >> y >> z >> A >> B >> C >> n;
mat33 matrice1 = {A,B,C,1,0,0,0,1,0};
mat31 matrice2 = {z,y,x};
mat31 ans = produs1(fast_pow(matrice1,n-2),matrice2);
fout << ans.m00 << '\n';
}
int main(){
fin >> test_cases;
while(test_cases--){
solve();
};
return 0;
}