Pagini recente » Cod sursa (job #2013661) | Cod sursa (job #2034996) | Cod sursa (job #828263) | Cod sursa (job #1503729) | Cod sursa (job #364513)
Cod sursa(job #364513)
#include <string.h>
#include <stdio.h>
#define MOD 666013
#define N 32
long long a[N][3][3];
void calc(long long (*t)[3],long long (*m)[3],long long (*n)[3])
{int i,j,k;
long long temp[3][3];
memset(temp,0,sizeof(temp));
for (i=0;i<3;i++)
{for (j=0;j<3;j++)
{for (k=0;k<3;k++)
{temp[i][j]=(temp[i][j]+m[i][k]*n[k][j])%MOD;
}
}
}
for (i=0;i<3;i++)
{for (j=0;j<3;j++)
{t[i][j]=temp[i][j];
}
}
}
int main ()
{freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
long long A,B,C,x,y,z,n,s;
int i,j,k,t;
scanf("%d\n",&t);
for (i=0;i<t;i++)
{scanf("%lld %lld %lld %lld %lld %lld %lld",&x,&y,&z,&A,&B,&C,&n);
memset(a,0,sizeof(a));
a[1][0][1]=1;
a[1][1][2]=1;
a[1][2][0]=C;
a[1][2][1]=B;
a[1][2][2]=A;
for (j=2;j<=31;j++)
{calc(a[j],a[j-1],a[j-1]);
}
a[0][0][0]=1;
a[0][1][1]=1;
a[0][2][2]=1;
for (j=n,k=1;j;j/=2,k++)
{if(j%2)
{calc(a[0],a[0],a[k]);
}
}
s=(a[0][0][0]*x+a[0][0][1]*y+a[0][0][2]*z)%MOD;
printf("%lld\n",s);
}
return 0;
}