Pagini recente » Cod sursa (job #209686) | Cod sursa (job #2908367) | Cod sursa (job #369270) | Cod sursa (job #1964225) | Cod sursa (job #692810)
Cod sursa(job #692810)
#include <iostream>
#include <fstream>
using namespace std;
long long A,B,C,X,Y,Z,N,t;
long long mat[4][4],init[4][4];
inline void show(long long a[4][4])
{
for(int i=1;i<=3;++i,cout<<'\n')
for(int j=1;j<=3;++j)
cout<<a[i][j]<<' ';
cout<<'\n';
}
inline void matrix_mul(long long a[4][4],long long b[4][4])
{
long long sol[4][4];
for(int i=1;i<=3;++i)
{
for(int j=1;j<=3;++j)
{
sol[i][j]=0;
for(int k=1;k<=3;++k)
{
sol[i][j]=sol[i][j]+1LL*a[i][k]*b[k][j];
}
sol[i][j]=sol[i][j]%666013;
}
}
for(int i=1;i<=3;++i)
{
for(int j=1;j<=3;++j)
{
a[i][j]=sol[i][j];
}
}
}
inline void exp(long long p)
{
for(;p>0;p>>=1)
{
//cout<<p<<'\n';
if(p&1)
matrix_mul(init,mat);
matrix_mul(mat,mat);
//show(mat);
}
}
int main()
{
ifstream in("iepuri.in");
ofstream out("iepuri.out");
for(in>>t;t>0;--t)
{
in>>X>>Y>>Z>>A>>B>>C>>N;
mat[1][1]=0,mat[1][2]=0,mat[1][3]=C;
mat[2][1]=1,mat[2][2]=0,mat[2][3]=B;
mat[3][1]=0,mat[3][2]=1,mat[3][3]=A;
init[1][1]=1,init[1][2]=0,init[1][3]=0;
init[2][1]=0,init[2][2]=1,init[2][3]=0;
init[3][1]=0,init[3][2]=0,init[3][3]=1;
exp(N);
out<<(init[1][1]*X+init[2][1]*Y+init[3][1]*Z)%666013<<'\n';
}
out.close();
return 0;
}