Pagini recente » Cod sursa (job #803393) | Cod sursa (job #2878316) | Cod sursa (job #259266) | Cod sursa (job #1529325) | Cod sursa (job #470310)
Cod sursa(job #470310)
#include <cstdio>
int t,x,y,z,a,b,c,n,q[3][3],rez[3][3],p,out[3][3],i,j,k,sol;
void prod(int in1[][3],int in2[][3])
{
for (i=0;i<3;++i)
for (j=0;j<3;++j)
for (k=0;k<3;++k)
out[i][j]=(out[i][j]+1LL*in1[i][k]*in2[k][j])%666013;
}
int main()
{
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);
rez[0][0]=rez[1][1]=rez[2][2]=1;
rez[0][1]=rez[0][2]=rez[1][0]=rez[1][2]=rez[2][0]=rez[2][1]=0;
q[0][0]=q[0][1]=q[1][1]=q[2][0]=0;
q[1][0]=q[2][1]=1;
q[0][2]=c;
q[1][2]=b;
q[2][2]=a;
for (p=n-2;p;p>>=1)
{
if (p & 1)
{
out[0][0]=out[0][1]=out[0][2]=out[1][0]=out[1][1]=out[1][2]=out[2][0]=out[2][1]=out[2][2]=0;
prod(rez,q);
for (i=0;i<3;++i)
rez[i][0]=out[i][0],rez[i][1]=out[i][1],rez[i][2]=out[i][2];
}
out[0][0]=out[0][1]=out[0][2]=out[1][0]=out[1][1]=out[1][2]=out[2][0]=out[2][1]=out[2][2]=0;
prod(q,q);
for (i=0;i<3;++i)
q[i][0]=out[i][0],q[i][1]=out[i][1],q[i][2]=out[i][2];
}
sol=(1LL*x*rez[0][2])%666013;
sol=(sol+1LL*y*rez[1][2])%666013;
sol=(sol+1LL*z*rez[2][2])%666013;
printf("%d\n",sol);
}
return 0;
}