Pagini recente » Cod sursa (job #478435) | Cod sursa (job #334154) | Cod sursa (job #143436) | Cod sursa (job #1681370) | Cod sursa (job #694358)
Cod sursa(job #694358)
#include <cstdio>
#define mod 666013
using namespace std;
int bit[100],n,k;
long long mat[4][4],m[4][4],p[4][4];
void base_2()
{
while(n>0)
{
bit[++k]=n%2; n/=2;
}
}
int main()
{ int i,h,l,c1,a,b,x,y,z,t;
long long sol,c;
freopen("iepuri.in","r",stdin); scanf("%d\n",&t);
freopen("iepuri.out","w",stdout);
for(h=1;h<=t;++h)
{
scanf("%d %d %d %d %d %d %d\n",&x,&y,&z,&a,&b,&c1,&n);
mat[1][1]=1; mat[1][2]=0; mat[1][3]=0; mat[2][1]=0; mat[2][2]=1; mat[2][3]=0;
mat[3][1]=0; mat[3][2]=0; mat[3][3]=1;
m[1][1]=0; m[1][2]=1; m[1][3]=0; m[2][1]=0; m[2][2]=0; m[2][3]=1;
m[3][1]=c1; m[3][2]=b; m[3][3]=a;
k=0; base_2();
for(i=k;i>=1;--i)
{
for(l=1;l<=3;++l)
for(c=1;c<=3;++c)
p[l][c]=((mat[l][1]*mat[1][c])%mod+(mat[l][2]*mat[2][c])%mod+(mat[l][3]*mat[3][c])%mod)%mod;
if(bit[i]==1)
{
for(l=1;l<=3;++l)
for(c=1;c<=3;++c)
mat[l][c]=p[l][c];
for(l=1;l<=3;++l)
for(c=1;c<=3;++c)
p[l][c]=((mat[l][1]*m[1][c])%mod+(mat[l][2]*m[2][c])%mod+(mat[l][3]*m[3][c])%mod)%mod;
}
for(l=1;l<=3;++l)
for(c=1;c<=3;++c)
mat[l][c]=p[l][c];
}
sol=((mat[1][1]*x)%mod+(mat[1][2]*y)%mod+(mat[1][3]*z)%mod)%mod;
printf("%d\n",sol);
}
fclose(stdin);
fclose(stdout);
return 0;
}