Pagini recente » Cod sursa (job #1887893) | Cod sursa (job #611954) | Cod sursa (job #1058235) | Cod sursa (job #753755) | Cod sursa (job #2754450)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
typedef long long ll;
const ll MOD=666013;
struct matrix{
vector<vector<ll>> data;
ll l,w;
matrix(ll n=0,ll m=0){
l=n,w=m;
data.resize(n);
for(auto& it : data)
it.resize(m);
}
matrix(vector<vector<ll>> b){
data=b,l=b.size(),w=b.size()?(*b.begin()).size():0;
}
matrix operator * (matrix b){
matrix ans(l,b.w);
for(int i=0;i<l;i++){ /// w=b.l;
for(int j=0;j<b.w;j++){
for(int k=0;k<w;k++)
ans.data[i][j]+=data[i][k]*b.data[k][j],ans.data[i][j]%=MOD;
}
}
return ans;
}
};
matrix pw(matrix a, ll n){
matrix ans(a); n--;
for(;n;n>>=1,a=a*a)
if(n&1)
ans=ans*a;
return ans;
}
void tc(){
ll a,b,c,x,y,z,n;
fin>>x>>y>>z>>a>>b>>c>>n;
switch(n){
case 0: fout<<x<<'\n'; break;
case 1: fout<<y<<'\n'; break;
case 2: fout<<z<<'\n'; break;
default:{
matrix step({{a,b,c},{1,0,0},{0,1,0}}),init({{z},{y},{x}});
fout<<(pw(step,n-2)*init).data[0][0]<<'\n';
}
}
}
int main()
{
ll t;
fin>>t;
while(t--)
tc();
return 0;
}