Pagini recente » Cod sursa (job #850004) | Cod sursa (job #2830604) | Cod sursa (job #406162) | Cod sursa (job #19421) | Cod sursa (job #404431)
Cod sursa(job #404431)
#include<fstream>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
#define m 666013
long long t,X,Y,Z,A,B,C;
long long N,a[3][3],c[3][3],sol[3][3],sol1[3][3];
void citire()
{
f>>X>>Y>>Z>>A>>B>>C>>N;
}
void init()
{
a[0][0]=A;
a[0][1]=B;
a[0][2]=C;
a[1][0]=1;
a[1][1]=0;
a[1][2]=0;
a[2][0]=0;
a[2][1]=1;
a[2][2]=0;
for(long long i=0;i<3;i++)
for(long long j=0;j<3;j++)
if(i==j)
sol[i][j]=1;
else
sol[i][j]=0;
}
void inmultire(long long q[][3],long long b[][3], long long d[][3])
{
for(long long i=0;i<3;i++)
for(long long j=0;j<3;j++)
{
d[i][j]=0;
for(long long k=0;k<3;k++)
d[i][j]=(d[i][j]+(q[i][k]*b[k][j])%m)%m;
}
}
void atrib(long long c[][3], long long sol[][3])
{
for(long long i=0;i<3;i++)
for(long long j=0;j<3;j++)
c[i][j]=sol[i][j];
}
int main()
{
f>>t;
for(long long i=0;i<t;i++)
{
citire();
init();
for(long long j=31;j>=0;j--)
{
atrib(c,sol);
inmultire(c,c,sol);
if((1<<j&(N-2))!=0)
{ inmultire(sol,a,sol1);
atrib(sol,sol1);
}
}
g<<((sol[0][0]*Z)%m+(sol[0][1]*Y)%m+(sol[0][2]*X)%m)%m<<'\n';
}
g.close();
return 0;
}