Pagini recente » Cod sursa (job #1782152) | Cod sursa (job #2890054) | Cod sursa (job #2064207) | Cod sursa (job #1406239) | Cod sursa (job #235387)
Cod sursa(job #235387)
#include<stdio.h>
#define mod 666013
long M[3][3],X[3][3];
void bin(long [3][3],long [3][3]);
int main()
{
int a,b,c,x,y,z,t;
int n;
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%d",&t);
for(;t;--t)
{
scanf("%d%d%d%d%d%d%ld",&x,&y,&z,&a,&b,&c,&n);
M[0][0]=a; M[0][1]=b; M[0][2]=c;
M[1][0]=1; M[1][1]=0; M[1][2]=0;
M[2][0]=0; M[2][1]=1; M[2][2]=0;
X[0][0]=1; X[0][1]=0; X[0][2]=0;
X[1][0]=0; X[1][1]=1; X[1][2]=0;
X[2][0]=0; X[2][1]=0; X[2][2]=1;
while (n)
{
if (n%2==1)
bin(X,M);
bin(M,M);
n/=2;
}
printf("%ld\n",((X[2][0]*z)%mod + (X[2][1]*y)%mod +(X[2][2]*x)%mod)%mod );
}
return 0;
}
void bin(long A[3][3],long B[3][3])
{
long C[3][3];
for(int i=0;i<3;++i)
for(int j=0;j<3;++j)
{
C[i][j]=(A[i][0]*B[0][j])%mod;
C[i][j]=(C[i][j]+ (A[i][1]*B[1][j]) %mod) %mod;
C[i][j]=(C[i][j]+ (A[i][2]*B[2][j]) %mod) %mod;
}
A[0][0]=C[0][0];
A[0][1]=C[0][1];
A[0][2]=C[0][2];
A[1][0]=C[1][0];
A[1][1]=C[1][1];
A[1][2]=C[1][2];
A[2][0]=C[2][0];
A[2][1]=C[2][1];
A[2][2]=C[2][2];
}