Pagini recente » Cod sursa (job #872117) | Cod sursa (job #2384550) | Cod sursa (job #389330) | Cod sursa (job #773256) | Cod sursa (job #1122050)
#include <cstdio>
#include <cstring>
#define MOD 666013
using namespace std;
long A,B,C,x,y,z,n,tc;
long a[4][4],b[4][4],c[4][4];
void set0 (long m[4][4])
{
for(long i=1;i<=3;i++)
for(long j=1;j<=3;j++)
m[i][j]=0;
}
void copy (long dest[4][4], long src[4][4])
{
for(long i=1;i<=3;i++)
for(long j=1;j<=3;j++)
dest[i][j]=src[i][j];
}
void multiply (long a[4][4], long b[4][4], long c[4][4])
{
for(long i=1;i<=3;i++)
for(long j=1;j<=3;j++)
{
c[i][j]=0;
for(long k=1;k<=3;k++)
c[i][j]=(c[i][j]+a[i][k]*b[k][j])%MOD;
}
copy(a,c);
}
int main()
{
freopen ("iepuri.in","r",stdin);
freopen ("iepuri.out","w",stdout);
scanf("%ld",&tc);
while(tc--)
{
scanf("%ld%ld%ld%ld%ld%ld%ld",&A,&B,&C,&x,&y,&z,&n);
set0(a);
set0(b);
a[1][2]=a[2][3]=1;;
a[3][1]=z,a[3][2]=y,a[3][3]=x;
b[1][1]=b[2][2]=b[3][3]=1;
n=n-2;
while(n){
if(n%2)
multiply(b,a,c);
multiply(a,a,c);
n/=2;
}
printf("%ld\n",(b[3][1]*A+b[3][2]*B+b[3][3]*C)%MOD);
}
return 0;
}