Pagini recente » Cod sursa (job #1820217) | Cod sursa (job #2218039) | Cod sursa (job #179311) | Cod sursa (job #1131428) | Cod sursa (job #588914)
Cod sursa(job #588914)
#include <cstdio>
#define mod 666013
int n, mat[3][3], v[3][3], sol;
void inmultire(int b[3][3], int c[3][3])
{
int i, j, k, d[3][3];
for (i=0; i<=2; i++)
for (j=0; j<=2; j++) d[i][j]=0;
for (k=0; k<=2; k++)
for (i=0; i<=2; i++)
for (j=0; j<=2; j++)
d[i][j]=(d[i][j]+b[i][k]*c[k][j])%mod;
for (i=0; i<3; i++)
for (j=0; j<3; j++) b[i][j]=d[i][j];
}
void pow(int n)
{
for (; n; n>>=1)
{
if (n&1) inmultire(v, mat);
inmultire(mat, mat);
}
}
int main()
{
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
int t, x, y, z, a, b, c, i, j;
scanf("%d", &t);
while (t--)
{
scanf("%d %d %d %d %d %d %d", &x, &y, &z, &a, &b, &c, &n);
mat[2][2]=a;
mat[1][2]=b;
mat[0][2]=c;
mat[1][0]=mat[2][1]=1;
mat[0][0]=mat[0][1]=mat[1][1]=mat[2][0]=0;
for (i=0; i<3; i++)
for (j=0; j<3; j++) v[i][j]=0;
v[1][1]=v[2][2]=v[0][0]=1;
pow(n-2);
sol=(x*v[0][2]%mod+y*v[1][2]%mod+z*v[2][2]%mod)%mod;
printf("%d\n",sol);
}
}