Pagini recente » Cod sursa (job #1019500) | Cod sursa (job #1416446) | Cod sursa (job #2427470) | Cod sursa (job #1873672) | Cod sursa (job #497233)
Cod sursa(job #497233)
#include<cstdio>
#define mod 666013
int i,t;
long long p[4][4],r[4][4];
void inmul(long long a[][4],long long b[][4])
{
int m[4][4],i=0,j=0,k=0;
for(i=1;i<=3;++i)
for(j=1;j<=3;++j)
m[i][j]=0;
for(i=1;i<=3;++i)
for(j=1;j<=3;++j)
for(k=1;k<=3;++k)
{
m[i][j]+=((a[i][k]*b[k][j])%mod);
m[i][j]%=mod;
}
for(i=1;i<=3;++i)
for(j=1;j<=3;++j)
p[i][j]=m[i][j];
}
void ridica(int k)
{
if(k==1) return ;
if(k%2==0)
{
ridica(k/2);
inmul(p,p);
}
else
{
ridica((k-1)/2);
inmul(p,p);
inmul(p,r);
}
}
void rezolva()
{
int a,b,c,x,y,z,n;
scanf("%d%d%d%d%d%d%d",&x,&y,&z,&a,&b,&c,&n);
p[1][1]=r[1][1]=(long long)(a);
p[2][1]=r[2][1]=(long long)(b);
p[3][1]=r[3][1]=(long long)(c);
p[1][2]=r[1][2]=1;
p[2][2]=p[3][2]=r[2][2]=r[3][2]=0;
p[1][3]=r[1][3]=0;
p[2][3]=r[2][3]=1;
p[3][3]=r[3][3]=0;
ridica(n-2);
int rez=((z*p[1][1])%mod+(y*p[2][1])%mod+(x*p[3][1])%mod)%mod;
printf("%d\n",rez);
}
int main()
{
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%d",&t);
for(i=1;i<=t;++i)
rezolva();
fclose(stdin);
fclose(stdout);
return 0;
}