Pagini recente » Cod sursa (job #758618) | Cod sursa (job #381195)
Cod sursa(job #381195)
#include <cstdio>
#include <cstring>
#define MOD 666013
long long T,X,Y,Z,A,B,C,N;
long long PU[4];
long long M[4][4];
void calcp();
void inmulteste();
void inmulteste2();
int main()
{
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%d",&T);
for(int i=1;i<=T;i++)
{
scanf("%d %d %d",&X,&Y,&Z);
scanf("%d %d %d",&A,&B,&C);
scanf("%d",&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;
PU[1]=X;PU[2]=Y;PU[3]=Z;
calcp();
printf("%d\n",PU[3]);
}
return 0;
}
void calcp()
{
N=N-2;
while(N)
{
if(N%2)
inmulteste();
inmulteste2();
N=N/2;;
}
}
void inmulteste()
{
long long T[4];
T[1]=0,T[2]=0;
T[1]=(PU[1]*M[1][1]+PU[2]*M[2][1]+PU[3]*M[3][1])%MOD;
T[2]=(PU[1]*M[1][2]+PU[2]*M[2][2]+PU[3]*M[3][2])%MOD;
T[3]=(PU[1]*M[1][3]+PU[2]*M[2][3]+PU[3]*M[3][3])%MOD;
PU[1]=T[1]%MOD;
PU[2]=T[2]%MOD;
PU[3]=T[3]%MOD;
}
void inmulteste2()
{
long long T[4][4];
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
T[i][j]=0;
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
for(int l=1;l<=3;l++)
T[i][j]=(T[i][j]+M[i][l]*M[l][j])%MOD;
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
M[i][j]=T[i][j]%MOD;
}