Pagini recente » Cod sursa (job #1962202) | Cod sursa (job #1744951) | Monitorul de evaluare | Cod sursa (job #933721) | Cod sursa (job #316737)
Cod sursa(job #316737)
#include <cstdio>
#include <cstring>
#define file_in "iepuri.in"
#define file_out "iepuri.out"
#define Mod 666013
long long mat[4][4];
long long n,x,y,z,a,b,c;
long long T;
long long mat4[4][4];
long long rez;
void mul(long long (&a)[4][4], long long b[4][4])
{
int i,j,k;
long long c[4][4];
memset(c,0,sizeof(c));
for (i=1;i<=3;++i)
for (j=1;j<=3;++j)
for (k=1;k<=3;++k)
c[i][j]=(c[i][j]+a[i][k]*b[k][j])%Mod;
memcpy (a,c,sizeof (c));
}
int main()
{
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%lld", &T);
while(T--)
{
memset(mat,0,sizeof(mat));
mat[1][2]=mat[2][3]=1;
scanf("%lld %lld %lld", &x, &y, &z);
scanf("%lld %lld %lld", &a, &b, &c);
scanf("%lld", &n);
memset(mat4,0,sizeof(mat4));
mat4[1][1]=mat4[2][2]=mat4[3][3]=1;
mat[3][1]=c;
mat[3][2]=b;
mat[3][3]=a;
while(n!=0)
{
if (n%2==1)
mul(mat4,mat);
mul(mat,mat);
n/=2;
}
rez=((mat4[1][1]*x)%Mod+(mat4[1][2]*y)%Mod+(mat4[1][3]*z)%Mod)%Mod;
printf("%lld\n", rez);
}
fclose(stdin);
fclose(stdout);
return 0;
}