Pagini recente » Cod sursa (job #2180379) | Cod sursa (job #2604678) | Cod sursa (job #2270459) | Cod sursa (job #2158381) | Cod sursa (job #2568649)
#include <fstream>
#include <cstring>
#define mod 666013
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
long long int n,t,x,y,z,a,b,c;
long long int M[4][4],sol[4][4];
void inmultire (long long int A[4][4],long long int B[4][4])
{
long long int aux[4][4];
int i1,j1,i;
for (i1=1; i1<=3; i1++)
{
for (j1=1; j1<=3; j1++)
{
int S=0;
for (i=1; i<=3; i++)
S=(S+(A[i1][i]*B[i][j1])%mod)%mod;
aux[i1][j1]=S;
}
}
for (i1=1;i1<=3;i1++)
for (j1=1;j1<=3;j1++)
A[i1][j1]=aux[i1][j1];
}
void ridicare_n()
{
memset(sol,0,sizeof sol);
sol[1][1]=sol[2][2]=sol[3][3]=1;
for (int i=0; (1<<i)<=n; i++)
{
if (((1<<i)&n)>0)
inmultire(sol,M);
inmultire(M,M);
}
}
int main()
{
int i,j;
fin>>t;
for (i=1; i<=t; i++)
{
fin>>x>>y>>z>>a>>b>>c>>n;
memset(M,0,sizeof M);
M[1][2]=M[2][3]=1;
M[3][1]=c;
M[3][2]=b;
M[3][3]=a;
ridicare_n();
fout<<((sol[1][1]*x)%mod+(sol[1][2]*y)%mod+(sol[1][3]*z)%mod)%mod<<'\n';
}
return 0;
}