Pagini recente » Cod sursa (job #2613268) | Cod sursa (job #1682206) | Cod sursa (job #284685) | Cod sursa (job #1674084) | Cod sursa (job #2568667)
#include <fstream>
#include <cstring>
#define mod 666013
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
long long int n,t,x,y,z,a,b,c,M[3][3],sol[3][3];
void inmultire (long long int A[3][3],long long int B[3][3])
{
long long int aux[3][3];
int i1,j,i;
for (i1=0; i1<3; i1++)
{
for (j=0; j<3; j++)
{
int S=0;
for (i=0; i<3; i++)
S=(S+A[i1][i]*B[i][j])%mod;
aux[i1][j]=S;
}
}
for (i=0;i<3;i++)
for (j=0;j<3;j++)
A[i][j]=aux[i][j];
}
void ridicare_n()
{
memset(sol,0,sizeof sol);
sol[1][1]=sol[2][2]=sol[0][0]=1;
for (int i=0; (1<<i)<=n; i++)
{
if (((1<<i)&n)>0)
inmultire(sol,M);
if ((1<<i)<n)
inmultire(M,M);
}
}
int main()
{
int i;
fin>>t;
for (i=1; i<=t; i++)
{
fin>>x>>y>>z>>a>>b>>c>>n;
memset(M,0,sizeof M);
M[0][1]=M[1][2]=1;
M[2][0]=c;
M[2][1]=b;
M[2][2]=a;
ridicare_n();
fout<<(sol[0][0]*x+sol[0][1]*y+sol[0][2]*z)%mod<<'\n';
}
return 0;
}