Pagini recente » Cod sursa (job #2393812) | Cod sursa (job #1511045) | Cod sursa (job #1903285) | Cod sursa (job #2664958) | Cod sursa (job #2546931)
#include <bits/stdc++.h>
using namespace std;
#define MOD 666013
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
struct mat{
int n, m;
vector<vector<int>> a;
mat(int na, int ma){
a.resize(na+1);
n=na;
m=ma;
for(int i=1;i<=na;++i){
a[i].resize(ma+1, 0);
}
}
mat operator*(mat b){
mat sol(n, b.m);
for(int i=1;i<=n;++i){
for(int j=1;j<=min(m, b.n);++j)
for(int k=1;k<=b.m;++k){
sol.a[i][k]=sol.a[i][k]+a[i][j]*b.a[j][k]%MOD;
sol.a[i][k]%=MOD;
}
}
return sol;
}
};
mat binpow(mat b, int e){
mat ans(0, 0);
bool ok=1;
while(e){
if(e&1){
if(ok) ok=0, ans=b;
else ans=b*ans;
}
b=b*b;
e>>=1;
}
return ans;
}
int main()
{
int t;
fin>>t;
while(t--){
int a, b, c, x, y, z, cnt;
fin>>x>>y>>z>>a>>b>>c>>cnt;
mat m(3, 3);
m.a[1][1]=a;
m.a[1][2]=b;
m.a[1][3]=c;
m.a[2][1]=1;
m.a[3][2]=1;
mat start(3, 1);
start.a[1][1]=z;
start.a[2][1]=y;
start.a[3][1]=x;
m=binpow(m, cnt-2);
start=m*start;
fout<<start.a[1][1]<<"\n";
}
return 0;
}
/*7 4 2
13 7 4
24 13 7*/