Pagini recente » Cod sursa (job #1261100) | Cod sursa (job #2652577) | Cod sursa (job #261910) | Cod sursa (job #2118111) | Cod sursa (job #2144599)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
int t,x,y,z,a,b,c,n;
const int modulo=666013;
long long sol[5][5];
void inmultire(long long a[5][5],long long b[5][5])
{
long long aux[4][4];
int i,j,q;
for(i=1; i<=3; i++)
{
for(j=1; j<=3; j++)
{
aux[i][j]=0;
for(q=1; q<=3; q++)
{
aux[i][j]=(aux[i][j]+a[i][q]*b[q][j]%modulo)%modulo;
}
}
}
for(i=1; i<=3; i++)
for(j=1; j<=3; j++)
a[i][j]=aux[i][j];
}
int main()
{
long long z1,z2,z3,ct,rez;
int i,j;
in>>t;
for(int q=1; q<=t; q++)
{
in>>x>>y>>z>>a>>b>>c>>n;
long long mat[5][5];
for(i=1; i<=4; i++)
for(j=1; j<=4; j++)
mat[i][j]=0;
mat[1][1]=a;
mat[2][1]=b;
mat[3][1]=c;
mat[1][2]=1;
mat[2][3]=1;
for(int i=1; i<=3; i++)
for(int j=1; j<=3; j++)
if(i==j)
sol[i][j]=1;
else
sol[i][j]=0;
//out<<q<<endl;
n=n-2;
while(n!=0)
{
if(n%2==1)
{
inmultire(sol,mat);
}
n=n/2;
inmultire(mat,mat);
}
/*for(i=1; i<=3; i++)
{
for(j=1; j<=3; j++)
out<<sol[i][j]<<" ";
out<<endl;
}
*/
out<<(z*sol[1][1]%modulo+y*sol[2][1]%modulo+x*sol[3][1]%modulo)%modulo<<'\n';
}
return 0;
}