Pagini recente » Cod sursa (job #712134) | Cod sursa (job #120699) | Cod sursa (job #1453246) | Cod sursa (job #1792063) | Cod sursa (job #473049)
Cod sursa(job #473049)
#include <cstdio>
#define M 666013
long long m1[4][4],m2[4][4];
int main()
{long long j,q,i,t,n,x,y,s,z,a,b,c;
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%lld",&t);
for (;t>0;--t)
{
long long m3[4][4];
scanf("%lld %lld %lld %lld %lld %lld %lld",&x,&y,&z,&a,&b,&c,&n);
n-=2;
m1[1][1]=m1[1][2]=m1[2][2]=m1[3][1]=0;
m1[2][1]=m1[3][2]=1;
m1[1][3]=c;
m1[2][3]=b;
m1[3][3]=a;
m2[1][1]=-1;
while (n)
{
if (n%2==1)
{
if (m2[1][1]<0)
{for (i=1;i<=3;++i)
for (j=1;j<=3;++j) m2[i][j]=m1[i][j];} else
{
for (i=1;i<=3;++i)
for (s=0,j=1;j<=3;++j)
{
for (s=0,q=1;q<=3;++q)
s=(s+m2[i][q]*m1[q][j]) % M ;
m3[i][j]=s;
}
for (i=1;i<=3;++i)
for (j=1;j<=3;++j) m2[i][j]=m3[i][j];
}
}
for (i=1;i<=3;++i)
for (s=0,j=1;j<=3;++j)
{
for (s=0,q=1;q<=3;++q)
s=(s+m1[i][q]*m1[q][j]) % M ;
m3[i][j]=s;
}
for (i=1;i<=3;++i)
for (j=1;j<=3;++j) m1[i][j]=m3[i][j];
n/=2;
}
printf("%lld\n",(m2[1][3]*x+m2[2][3]*y+m2[3][3]*z) % M);
}
return 0;}