Pagini recente » Cod sursa (job #349100) | Cod sursa (job #479630) | Cod sursa (job #3348407) | Cod sursa (job #259982) | Cod sursa (job #3346468)
#include <fstream>
#define int long long
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
const int MOD=666013;
int n, x, y, z, a, b, c;
struct matrix
{
int di, dj, mat[3][3];
friend matrix operator*(const matrix &a, const matrix &b)
{
matrix c={a.di, b.dj};
for(int i=0;i<c.di;i++)
for(int j=0;j<c.dj;j++)
{
c.mat[i][j]=0;
for(int k=0;k<a.dj;k++)
c.mat[i][j]=(c.mat[i][j]+a.mat[i][k]*b.mat[k][j]%MOD)%MOD;
}
return c;
}
}init, mulmat;
void init_mat()
{
init={1, 3, {{x, y, z}}};
mulmat={3, 3, {{0, 0, c},
{1, 0, b},
{0, 1, a}}};
}
matrix lgpow(matrix a, int b)
{
if(b==1)
return a;
matrix p=lgpow(a, b/2);
if(b%2)
return p*p*a;
return p*p;
}
void solve()
{
in>>x>>y>>z>>a>>b>>c>>n;
init_mat();
init=init*lgpow(mulmat, n-2);
out<<init.mat[0][2]<<'\n';
}
signed main()
{
int t; in>>t;
while(t--)
solve();
return 0;
}