Pagini recente » Cod sursa (job #19732) | Cod sursa (job #2646189) | Cod sursa (job #3206593) | Cod sursa (job #1473968) | Cod sursa (job #274129)
Cod sursa(job #274129)
#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];
void citire(){scanf("%lld %lld %lld %lld %lld %lld %lld",&x,&y,&z,&a,&b,&c,&n);}
void mul(long long A[5][5],long long B[5][5]){
long long i,j,k;
for (i=1;i<=3;i++)
for (j=1;j<=3;j++){
C[i][j]=0;
for (k=1,C[i];k<=3;k++)
C[i][j]+=A[i][k]*B[k][j];
}
for (i=1;i<=3;i++)
for (j=1;j<=3;j++)
A[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,i;
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%lld",&t);
for (int crt=1;crt<=t;crt++){
citire();
init();
p=1;
i=0;
while (p<=n){
if (p & n)
mul(s,m);
i++;
p=1<<i;
mul(m,m);
}
printf("%lld\n",((s[1][1]*x)%Q+(s[2][1]*y)%Q+(s[3][1]*z)%Q)%Q);
}
return 0;
}