Pagini recente » Cod sursa (job #652739) | Cod sursa (job #3144341) | Cod sursa (job #2461804) | Cod sursa (job #1783688) | Cod sursa (job #60500)
Cod sursa(job #60500)
#include<stdio.h>
#include<string.h>
#define Mod 666013
int x,y,z,a,b,c,n;
long long A[9],M[9],R[9];
void mul(long long A[])
{
R[0]=(A[0]*M[0]+A[1]*M[3]+A[2]*M[6])%Mod;
R[1]=(A[0]*M[1]+A[1]*M[4]+A[2]*M[7])%Mod;
R[2]=(A[0]*M[2]+A[1]*M[5]+A[2]*M[8])%Mod;
R[3]=(A[3]*M[0]+A[4]*M[3]+A[5]*M[6])%Mod;
R[4]=(A[3]*M[1]+A[4]*M[4]+A[5]*M[7])%Mod;
R[5]=(A[3]*M[2]+A[4]*M[5]+A[5]*M[8])%Mod;
R[6]=(A[6]*M[0]+A[7]*M[3]+A[8]*M[6])%Mod;
R[7]=(A[6]*M[1]+A[7]*M[4]+A[8]*M[7])%Mod;
R[8]=(A[6]*M[2]+A[7]*M[5]+A[8]*M[8])%Mod;
memcpy(A,R,sizeof(R));
}
long long solve()
{
unsigned i;
A[0]=1; A[1]=0; A[2]=0; A[3]=0; A[4]=1; A[5]=0; A[6]=0; A[7]=0; A[8]=1;
M[0]=0; M[1]=0; M[2]=c; M[3]=1; M[4]=0; M[5]=b; M[6]=0; M[7]=1; M[8]=a;
n-=2;
if(n&1)
memcpy(A,M,sizeof(R));
for(i=2;i<=n;i<<=1)
{
mul(M);
if(n&i)
mul(A);
}
return (x*A[2]+y*A[5]+z*A[8])%Mod;
}
int main()
{
int t;
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d%d%d%d%d",&x,&y,&z,&a,&b,&c,&n);
printf("%lld\n",solve());
}
return 0;
}