Pagini recente » Cod sursa (job #676836) | Cod sursa (job #543969) | Cod sursa (job #1586937) | Autentificare | Cod sursa (job #1255985)
#include <cstdio>
FILE* in=fopen("iepuri.in","r");
FILE* out=fopen("iepuri.out","w");
const int R=666013;
int mat[3][3];
int pst[3][3];
long long aux[3][3];
void inmultire(int a[3][3], int b[3][3])
{
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
for(int k=0; k<3; k++)
{
aux[i][j]+=(long long)a[i][k]*b[k][j];
aux[i][j]%=R;
}
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
{
a[i][j]=aux[i][j];
aux[i][j]=0;
}
}
int main()
{
int x,y,z,a,b,c,n,t;
fscanf(in,"%d",&t);
for(int k=1; k<=t; k++)
{
fscanf(in,"%d%d%d%d%d%d%d",&x,&y,&z,&a,&b,&c,&n);
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
{
mat[i][j]=0;
pst[i][j]=0;
}
mat[0][0]=a;
mat[0][1]=b;
mat[0][2]=c;
mat[1][0]=1;
mat[2][1]=1;
pst[0][0]=1;
pst[1][1]=1;
pst[2][2]=1;
n-=2;
while(n)
{
if(n%2==1)
{
inmultire(pst,mat);
}
n/=2;
inmultire(mat,mat);
}
fprintf(out,"%d\n",((long long)pst[0][0]*z+(long long)pst[0][1]*y+(long long)pst[0][2]*x)%R);
}
return 0;
}