Pagini recente » Cod sursa (job #1161207) | Cod sursa (job #1018286) | Cod sursa (job #659586) | Cod sursa (job #2942919) | Cod sursa (job #2062088)
#include <fstream>
#define nr 666013
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
void inmultesteMatrici(long long int a[4][4],long long int b[4][4],long long int p[4][4])
{
p[1][1]=a[1][1]*b[1][1]%nr+a[1][2]*b[2][1]%nr+a[1][3]*b[3][1]%nr;
p[1][1]%=nr;
p[1][2]=a[1][1]*b[1][2]%nr+a[1][2]*b[2][2]%nr+a[1][3]*b[3][2]%nr;
p[1][2]%=nr;
p[1][3]=a[1][1]*b[1][3]%nr+a[1][2]*b[2][3]%nr+a[1][3]*b[3][3]%nr;
p[1][3]%=nr;
p[2][1]=a[2][1]*b[1][1]%nr+a[2][2]*b[2][1]%nr+a[2][3]*b[3][1]%nr;
p[2][1]%=nr;
p[2][2]=a[2][1]*b[1][2]%nr+a[2][2]*b[2][2]%nr+a[2][3]*b[3][2]%nr;
p[2][2]%=nr;
p[2][3]=a[2][1]*b[1][3]%nr+a[2][2]*b[2][3]%nr+a[2][3]*b[3][3]%nr;
p[2][3]%=nr;
p[3][1]=a[3][1]*b[1][1]%nr+a[3][2]*b[2][1]%nr+a[3][3]*b[3][1]%nr;
p[3][1]%=nr;
p[3][2]=a[3][1]*b[1][2]%nr+a[3][2]*b[2][2]%nr+a[3][3]*b[3][2]%nr;
p[3][2]%=nr;
p[3][3]=a[3][1]*b[1][3]%nr+a[3][2]*b[2][3]%nr+a[3][3]*b[3][3]%nr;
p[3][3]%=nr;
}
void copiazaMatrice(long long int b[4][4],long long int a[4][4])
{
for(int i=1;i<=3;++i)
for(int j=1;j<=3;++j)
{
b[i][j]=a[i][j];
}
}
long long int b[4][4],MatN[4][4],aux[4][4],Mat[4][4],N;
void lgput(long long int a[4][4],long long int n)
{
MatN[1][1]=MatN[2][2]=MatN[3][3]=1;
MatN[1][2]=MatN[1][3]=MatN[2][1]=MatN[2][3]=MatN[3][1]=MatN[3][2]=0;
copiazaMatrice(b,a);
for(int i=0;n>>i;++i)
{
if((n>>i)&1)
{
inmultesteMatrici(MatN,b,aux);
copiazaMatrice(MatN,aux);
}
inmultesteMatrici(b,b,aux);
copiazaMatrice(b,aux);
}
}
int main()
{
int T,x,y,z;
f>>T;
for(int i=1;i<=T;++i)
{
int A,B,C;
f>>x>>y>>z>>A>>B>>C>>N;
Mat[1][1]=Mat[1][3]=Mat[2][1]=Mat[2][2]=0;
Mat[1][2]=Mat[2][3]=1;
Mat[3][1]=C;
Mat[3][2]=B;
Mat[3][3]=A;
lgput(Mat,N);
g<<(MatN[1][1]*x%nr+MatN[1][2]*y%nr+MatN[1][3]*z%nr)%nr<<'\n';
}
return 0;
}