Pagini recente » Cod sursa (job #988330) | Cod sursa (job #2398702) | Cod sursa (job #2680813) | Cod sursa (job #2768219) | Cod sursa (job #2184408)
#include <fstream>
#include <cstring>
#define MOD 666013
#define D 4
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
int T,x,y,z,a,b,c;
long long I[D][D],n;
void MatrixMultiplication (long long A[D][D], long long B[D][D], long long C[D][D]) {
long long aux[D][D];
memset(aux,0,sizeof(aux));
for (int i=1; i<=3; ++i)
for (int j=1; j<=3; ++j) {
long long S=0;
for (int k=1; k<=3; ++k) {
S += 1LL * (A[i][k]%MOD) * (B[k][j]%MOD);
}
aux[i][j] = (1LL*(S%MOD))%MOD;
}
memcpy(C,aux,sizeof(aux));
}
void MatrixPower(long long A[D][D], long long k) {
long long aux[D][D];
memset(aux,0,sizeof(aux));
for (int i=1; i<=3; ++i) aux[i][i]=1;
while (k>1) {
if (k%2==0) {
k=k/2;
MatrixMultiplication(A,A,A);
}
else {
--k;
MatrixMultiplication(aux,A,aux);
}
}
MatrixMultiplication(aux,A,A);
}
void Solve() {
f>>x>>y>>z>>a>>b>>c>>n;
I[1][1]=0; I[1][2]=1; I[1][3]=0;
I[2][1]=0; I[2][2]=0; I[2][3]=1;
I[3][1]=c; I[3][2]=b; I[3][3]=a;
// for (int i=1; i<=3; ++i) {
//
// for (int j=1; j<=3; ++j) g<<I[i][j]<<' ';
// g<<'\n';
// }
MatrixPower(I,n-2);
// for (int i=1; i<=3; ++i) {
//
// for (int j=1; j<=3; ++j) g<<I[i][j]<<' ';
// g<<'\n';
// }
long long S=0;
S += (1LL*(x%MOD) * (I[3][1]%MOD)) % MOD;
S += (1LL*(y%MOD) * (I[3][2]%MOD)) % MOD;
S += (1LL*(z%MOD) * (I[3][3]%MOD)) % MOD;
g<<S<<'\n';
// g<<'\n'<<'\n';
}
int main() {
f>>T;
for (int test=1; test<=T; ++test) {
Solve();
}
f.close(); g.close();
return 0;
}