Pagini recente » Cod sursa (job #1621944) | Cod sursa (job #1653092) | Cod sursa (job #1544337) | Cod sursa (job #494579) | Cod sursa (job #274150)
Cod sursa(job #274150)
#include<stdio.h>
#define Q 666013
long long x, y, z, a, b, c, n, t, C[5][5], s[5][5], m[5][5];
inline void mul1(){
long long i ,j ,k;
for (i = 1; i <= 3; i++) for (j = 1; j <= 3; j++){
C[i][j] = 0;
for (k = 1; k <= 3; k++) C[i][j] += s[i][k] * m[k][j];
}
for (i = 1; i <= 3; i++) for (j = 1; j <= 3; j++)
s[i][j] = C[i][j] % Q;
}
inline void mul2(){
long long i, j, k;
for (i = 1; i <= 3; i++) for (j = 1; j <= 3; j++){
C[i][j] = 0;
for (k = 1; k <= 3 ; k++) C[i][j] += m[i][k] * m[k][j];
}
for (i = 1; i <= 3; i++) for (j = 1; j <= 3; j++)
m[i][j] = C[i][j] % Q;
}
void init(){
s[1][1]=1; s[1][2]=0; s[1][3]=0; s[2][1]=0; s[2][2]=1; s[2][3]=0; s[3][1]=0; s[3][2]=0; s[3][3]=1;
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;
}
int main(){
long long p;
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%lld", &t);
for (int crt = 1; crt <= t; crt++){
scanf("%lld %lld %lld %lld %lld %lld %lld",&x,&y,&z,&a,&b,&c,&n);
init();
for (p = 1; p <= n; p <<= 1){
if (p & n) mul1();
mul2();
}
printf("%lld\n",( ( s[1][1] * x ) % Q + ( s[2][1] * y ) % Q + ( s[3][1] * z ) % Q ) % Q);
}
return 0;
}