Pagini recente » Cod sursa (job #2075375) | Cod sursa (job #1982027) | Cod sursa (job #2898267) | Cod sursa (job #2499789) | Cod sursa (job #1467578)
#include <cstdio>
using namespace std;
int X,Y,Z,N,A,B,C,a[4][4],m[4][4];
inline void inm(int a[4][4],int b[4][4])
{
int i,j,k,c[4][4];
for(i=0;i<3;++i)
for(j=0;j<3;++j)
for(c[i][j]=k=0;k<3;++k)
c[i][j]=(c[i][j]+a[i][k]*b[k][j])%666013;
for(i=0;i<3;++i)
for(j=0;j<3;++j)
a[i][j]=c[i][j];
}
inline void putere(int x)
{
if(!x) return;
if(x&1) inm(m,a);
inm(a,a);
putere(x>>1);
}
inline void initialize()
{
a[0][0]=0;a[1][0]=1;a[2][0]=0;
a[0][1]=0;a[1][1]=0;a[2][1]=1;
a[0][2]=A;a[1][2]=B;a[2][2]=C;
m[0][0]=m[1][1]=m[2][2]=1;
m[0][1]=m[0][2]=m[1][0]=m[1][2]=m[2][0]=m[2][1]=0;
}
int main()
{
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
int t;scanf("%d",&t);
while(t--)
{
scanf("%d%d%d%d%d%d%d",&X,&Y,&Z,&C,&B,&A,&N);
initialize();
putere(N);
printf("%d\n",(int)((1LL*m[0][0]*X+1LL*m[1][0]*Y+1LL*m[2][0]*Z)%666013));
}
return 0;
}