Pagini recente » Cod sursa (job #1303710) | Cod sursa (job #1399757) | Cod sursa (job #2893493) | Cod sursa (job #1152326)
#include <cstdio>
#define MOD 666013
using namespace std;
inline void MultMat(int a[][5], int b[][5])
{
int c[5][5],i,j,k,s;
for(i=1;i<=3;++i)
for(j=1;j<=3;++j)
{
s=0;
for(k=1;k<=3;++k)
s=(s+a[i][k]*b[k][j])%MOD;
c[i][j]=s;
}
for(i=1;i<=3;++i)
for(j=1;j<=3;++j)
a[i][j]=c[i][j];
}
inline void Pow_Log(int a[][5], int p)
{
int put[5][5],i,j;
for(i=1;i<=3;++i)
for(j=1;j<=3;++j)
if(i==j)
put[i][j]=1;
else
put[i][j]=0;
while(p)
{
if(p%2)
{
--p;
MultMat(put,a);
}
p/=2;
MultMat(a,a);
}
for(i=1;i<=3;++i)
for(j=1;j<=3;++j)
a[i][j]=put[i][j];
}
int main()
{
int T,x,y,z,A,B,C,N,a[5][5],b[5][5];
freopen ("iepuri.in","r",stdin);
freopen ("iepuri.out","w",stdout);
scanf("%d", &T);
while(T--)
{
scanf("%d%d%d%d%d%d%d", &x,&y,&z,&A,&B,&C,&N);
a[1][1]=a[1][2]=0; a[1][3]=C;
a[2][1]=1; a[2][2]=0; a[2][3]=B;
a[3][1]=0; a[3][2]=1; a[3][3]=A;
Pow_Log(a,N-2);
b[1][1]=x; b[1][2]=y; b[1][3]=z;
b[2][1]=b[2][2]=b[2][3]=0;
b[3][1]=b[3][2]=b[3][3]=0;
MultMat(b,a);
printf("%d\n", b[1][3]);
}
return 0;
}