Pagini recente » Cod sursa (job #2193299) | Cod sursa (job #207873) | Cod sursa (job #2905067) | Statistici Mocanu Ioana Cristina (cristinaioana) | Cod sursa (job #1541891)
#include<cstdio>
FILE *in = fopen("iepuri.in","r");
FILE *out = fopen("iepuri.out","w");
long long M[4][4];
long long x, y, z, a, b, c, n;
long long t;
long long rez[4][4];
#define MOD 666013
void ridicareM(long long n){
long long copieRez[4][4];
long long copieM[4][4];
long long s;
rez[1][2] = rez[1][3] = rez[2][1] = rez[2][3] = rez[3][1] = rez[3][2] = 0;
rez[1][1] = rez[2][2] = rez[3][3] = 1;
while(n != 0){
if(n % 2 == 1){
--n;
for(long long i = 1; i <= 3; ++i)
for(long long j = 1; j <= 3; ++j)
copieRez[i][j] = rez[i][j];
for(long long i = 1; i <= 3; ++i)
for(long long j = 1; j <= 3; ++j){
s = 0;
for(long long k = 1; k <= 3; ++k)
s = (s + copieRez[i][k] * M[k][j] % MOD) % MOD;
rez[i][j] = s;
}
}
else{
n /= 2;
for(long long i = 1; i <= 3; ++i)
for(long long j = 1; j <= 3; ++j)
copieM[i][j] = M[i][j];
for(long long i = 1; i <= 3; ++i)
for(long long j = 1; j <= 3; ++j){
s = 0;
for(long long k = 1; k <= 3; ++k)
s = (s + copieM[i][k] * copieM[k][j] % MOD) % MOD;
M[i][j] = s;
}
}
}
}
long long solve(long long x, long long y, long long z, long long a, long long b, long long c, long long n){
M[1][1] = 0;
M[1][2] = 0;
M[1][3] = c;
M[2][1] = 1;
M[2][2] = 0;
M[2][3] = b;
M[3][1] = 0;
M[3][2] = 1;
M[3][3] = a;
ridicareM(n - 2);
return ((x * rez[1][3] % MOD + y * rez[2][3] % MOD + z * rez[3][3] % MOD) % MOD);
}
void read(){
fscanf(in, "%lld", &t);
for(long long i = 1; i <= t; ++i){
fscanf(in, "%lld %lld %lld %lld %lld %lld %lld", &x, &y, &z, &a, &b, &c, &n);
fprintf(out, "%lld\n", solve(x, y, z, a, b, c, n));
}
}
int main(){
read();
return 0;
}