Pagini recente » Cod sursa (job #320354) | Cod sursa (job #2534609) | Cod sursa (job #2304565) | Cod sursa (job #2144542) | Cod sursa (job #807157)
Cod sursa(job #807157)
#include <iostream>
#include <fstream>
#include <cstdio>
#define MOD 666013
using namespace std;
void nulla(long long a[4][4])
{
int i,j;
for(i=0;i<=3;i++)
for(j=0;j<=3;j++)
a[i][j]=0;
}
long long a[4][4],b[4][4],m[4];
int x,y,z,f,g,h,n,p;
void inmultire(long long a[4][4],long long b[4][4])
{
int i,j,k;
long long c[4][4];
nulla(c);
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
for(k=1;k<=3;k++)
c[i][j]+=a[i][k]*b[k][j];
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
a[i][j]=c[i][j]%MOD;
}
void putere(int &n)
{
while(n)
{
if(n%2==1)
inmultire(b,a);
n=n/2;
inmultire(a,a);
}
}
void aloc(int f,int g,int h,int x,int y,int z)
{
nulla(a);
nulla(b);
a[1][2]=1; a[2][3]=1; a[3][1]=h; a[3][2]=g; a[3][3]=f;
b[1][2]=1; b[2][3]=1; b[3][1]=h; b[3][2]=g; b[3][3]=f;
m[1]=x; m[2]=y; m[3]=z;
}
int main()
{
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%d",&p);
while(p)
{ scanf("%d %d %d %d %d %d %d",&x,&y,&z,&f,&g,&h,&n);
aloc(f,g,h,x,y,z);
n=n-3;
putere(n);
int q=(b[3][1]*m[1])%MOD+(b[3][2]*m[2])%MOD+(b[3][3]*m[3])%MOD;
q=q%MOD;
cout<<q<<"\n";
p--;
}
fclose(stdin);
fclose(stdout);
return 0;
}