Pagini recente » Cod sursa (job #1441094) | Cod sursa (job #2328028) | Cod sursa (job #503104) | Cod sursa (job #785235) | Cod sursa (job #404413)
Cod sursa(job #404413)
#include<fstream>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
#define m 666013
int t,X,Y,Z,A,B,C;
int N,vec[3],a[3][3],c[3][3],sol[3][3],sol1[3][3];
void citire()
{
f>>X>>Y>>Z>>A>>B>>C>>N;
vec[2]=X;
vec[1]=Y;
vec[0]=Z;
}
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(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if(i==j)
sol[i][j]=1;
else
sol[i][j]=0;
}
void inmultire(int a[][3],int b[][3], int d[][3])
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
d[i][j]=0;
for(int k=0;k<3;k++)
d[i][j]=(d[i][j]+(a[i][k]*b[k][j])%m)%m;
}
}
void atrib(int c[][3], int sol[][3])
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
c[i][j]=sol[i][j];
}
int main()
{
f>>t;
for(int i=0;i<t;i++)
{
citire();
init();
for(int j=4;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+sol[0][1]*Y+sol[0][2]*X<<'\n';
}
g.close();
return 0;
}