Pagini recente » Cod sursa (job #2111575) | Cod sursa (job #2883541) | Cod sursa (job #2581637) | Cod sursa (job #2504041) | Cod sursa (job #2664701)
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin ("iepuri.in");
ofstream fout ("iepuri.out");
const int MOD=666013;
int a[4][4],r[4][4],r2[4][4],b[4][4];
void Inmultire2 ()
{
r2[1][1]=(1LL*r[1][1]*a[1][1]+1LL*r[1][2]*a[2][1]+1LL*r[1][3]*a[3][1])%MOD;
r2[1][2]=(1LL*r[1][1]*a[1][2]+1LL*r[1][2]*a[2][2]+1LL*r[1][3]*a[3][2])%MOD;
r2[1][3]=(1LL*r[1][1]*a[1][3]+1LL*r[1][2]*a[2][3]+1LL*r[1][3]*a[3][3])%MOD;
r2[2][1]=(1LL*r[2][1]*a[1][1]+1LL*r[2][2]*a[2][1]+1LL*r[2][3]*a[3][1])%MOD;
r2[2][2]=(1LL*r[2][1]*a[1][2]+1LL*r[2][2]*a[2][2]+1LL*r[2][3]*a[3][2])%MOD;
r2[2][3]=(1LL*r[2][1]*a[1][3]+1LL*r[2][2]*a[2][3]+1LL*r[2][3]*a[3][3])%MOD;
r2[3][1]=(1LL*r[3][1]*a[1][1]+1LL*r[3][2]*a[2][1]+1LL*r[3][3]*a[3][1])%MOD;
r2[3][2]=(1LL*r[3][1]*a[1][2]+1LL*r[3][2]*a[2][2]+1LL*r[3][3]*a[3][2])%MOD;
r2[3][3]=(1LL*r[3][1]*a[1][3]+1LL*r[3][2]*a[2][3]+1LL*r[3][3]*a[3][3])%MOD;
r[1][1]=r2[1][1];
r[1][2]=r2[1][2];
r[1][3]=r2[1][3];
r[2][1]=r2[2][1];
r[2][2]=r2[2][2];
r[2][3]=r2[2][3];
r[3][1]=r2[3][1];
r[3][2]=r2[3][2];
r[3][3]=r2[3][3];
}
void Inmultire ()
{
b[1][1]=a[1][1];
b[1][2]=a[1][2];
b[1][3]=a[1][3];
b[2][1]=a[2][1];
b[2][2]=a[2][2];
b[2][3]=a[2][3];
b[3][1]=a[3][1];
b[3][2]=a[3][2];
b[3][3]=a[3][3];
a[1][1]=(1LL*b[1][1]*b[1][1]+1LL*b[1][2]*b[2][1]+1LL*b[1][3]*b[3][1])%MOD;
a[1][2]=(1LL*b[1][1]*b[1][2]+1LL*b[1][2]*b[2][2]+1LL*b[1][3]*b[3][2])%MOD;
a[1][3]=(1LL*b[1][1]*b[1][3]+1LL*b[1][2]*b[2][3]+1LL*b[1][3]*b[3][3])%MOD;
a[2][1]=(1LL*b[2][1]*b[1][1]+1LL*b[2][2]*b[2][1]+1LL*b[2][3]*b[3][1])%MOD;
a[2][2]=(1LL*b[2][1]*b[1][2]+1LL*b[2][2]*b[2][2]+1LL*b[2][3]*b[3][2])%MOD;
a[2][3]=(1LL*b[2][1]*b[1][3]+1LL*b[2][2]*b[2][3]+1LL*b[2][3]*b[3][3])%MOD;
a[3][1]=(1LL*b[3][1]*b[1][1]+1LL*b[3][2]*b[2][1]+1LL*b[3][3]*b[3][1])%MOD;
a[3][2]=(1LL*b[3][1]*b[1][2]+1LL*b[3][2]*b[2][2]+1LL*b[3][3]*b[3][2])%MOD;
a[3][3]=(1LL*b[3][1]*b[1][3]+1LL*b[3][2]*b[2][3]+1LL*b[3][3]*b[3][3])%MOD;
}
void Ridicarelaputere (int k)
{
r[1][1]=1;
r[1][3]=0;
r[1][2]=0;
r[2][1]=0;
r[2][2]=1;
r[2][3]=0;
r[3][3]=1;
r[3][2]=0;
r[3][1]=0;
while (k)
{
if (k%2==1)
{
Inmultire2 ();
}
Inmultire ();
k=k/2;
}
}
int main()
{
int n,x,y,z,A,B,C,k;
fin >>n;
while (n>0)
{
fin >>x>>y>>z>>A>>B>>C>>k;
a[1][1]=0;
a[1][2]=0;
a[2][2]=0;
a[3][1]=0;
a[1][3]=C;
a[2][1]=1;
a[2][3]=B;
a[3][2]=1;
a[3][3]=A;
Ridicarelaputere (k-2);
fout <<x*r[1][3]%MOD+y*r[2][3]%MOD+z*r[3][3]%MOD<<'\n';
n--;
}
fin.close ();
fout.close ();
return 0;
}