Pagini recente » Cod sursa (job #53097) | Cod sursa (job #1468842) | Cod sursa (job #628384) | Cod sursa (job #1252853) | Cod sursa (job #875481)
Cod sursa(job #875481)
#include<cstdio>
#define mod 666013
long long t, v[3][3],a[3][3],n,x,y,z;
void mult(long long X[3][3], long long Y[3][3])
{
int i,j,aux[3][3];
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
aux[i][j]=X[i][j];
aux[0][0]=((X[0][0]*Y[0][0])%mod+(X[0][1]*Y[1][0])%mod+(X[0][2]*Y[2][0])%mod)%mod;
aux[0][1]=((X[0][0]*Y[0][1])%mod+(X[0][1]*Y[1][1])%mod+(X[0][2]*Y[2][1])%mod)%mod;
aux[0][2]=((X[0][0]*Y[0][2])%mod+(X[0][1]*Y[1][2])%mod+(X[0][2]*Y[2][2])%mod)%mod;
aux[1][0]=((X[1][0]*Y[0][0])%mod+(X[1][1]*Y[1][0])%mod+(X[1][2]*Y[2][0])%mod)%mod;
aux[1][1]=((X[1][0]*Y[0][1])%mod+(X[1][1]*Y[1][1])%mod+(X[1][2]*Y[2][1])%mod)%mod;
aux[1][2]=((X[1][0]*Y[0][2])%mod+(X[1][1]*Y[1][2])%mod+(X[1][2]*Y[2][2])%mod)%mod;
aux[2][0]=((X[2][0]*Y[0][0])%mod+(X[2][1]*Y[1][0])%mod+(X[2][2]*Y[2][0])%mod)%mod;
aux[2][1]=((X[2][0]*Y[0][1])%mod+(X[2][1]*Y[1][1])%mod+(X[2][2]*Y[2][1])%mod)%mod;
aux[2][2]=((X[2][0]*Y[0][2])%mod+(X[2][1]*Y[1][2])%mod+(X[2][2]*Y[2][2])%mod)%mod;
X[0][0]=aux[0][0];X[0][1]=aux[0][1];X[0][2]=aux[0][2];
X[1][0]=aux[1][0];X[1][1]=aux[1][1];X[1][2]=aux[1][2];
X[2][0]=aux[2][0];X[2][1]=aux[2][1];X[2][2]=aux[2][2];
}
int main()
{
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%d ", &t);
for(;t;--t)
{
scanf("%lld%lld%lld%lld%lld%lld%lld", &x, &y, &z, &v[0][0], &v[0][1], &v[0][2], &n);
v[1][0]=a[1][0]=1;v[1][1]=a[1][1]=0;v[1][2]=a[1][2]=0;
v[2][0]=a[2][0]=0;v[2][1]=a[2][1]=1;v[2][2]=a[2][2]=0;
a[0][0]=v[0][0];a[0][1]=v[0][1];a[0][2]=v[0][2];
n-=3;
for(;n!=0;)
{
if(n%2)
mult(a,v);
mult(v,v);
n/=2;
}
printf("%lld\n", ((a[0][0]*z)%mod+(a[0][1]*y)%mod+(a[0][2]*x)%mod)%mod);
}
return 0;
}