Pagini recente » Cod sursa (job #909379) | Cod sursa (job #3267857) | Cod sursa (job #986186) | Cod sursa (job #3274322) | Cod sursa (job #292)
Cod sursa(job #292)
#include<stdio.h>
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#define R 666013
long long M[10][10] , MM[10][10] , MMM[10][10] , sol[10][10] ,sol1[10][10];
long long n , x , y, z ,a,b,c,i,j,aux , q , t ,sir[101],kkt;
FILE *fin,*fout;
int main()
{
fin = fopen("iepuri.in","r");
fout = fopen("iepuri.out","w");
fscanf(fin,"%ld",&t);
for (long k = 1 ; k<= t ; k++)
{
fscanf(fin,"%ld%ld%ld%ld%ld%ld%ld",&x,&y,&z,&a,&b,&c,&n);
M[1][2] =1;
M[2][3] =1;
M[3][1] =c;
M[3][2] =b;
M[3][3] =a;
MM[1][2] =1;
MM[2][3] =1;
MM[3][1] =c;
MM[3][2] =b;
MM[3][3] =a;
sol[1][1] = 1 , sol[2][2] = 1, sol[3][3] = 1;
aux = n;
while (aux)
{
sir[0]++;
sir[sir[0]] = aux%2;
aux/=2;
}
if (sir[1]==1)
{
long s;
for (j = 1 ; j<= 3 ; j++)
{
s = M[j][1]*sol[1][1] + M[j][2]*sol[2][1] + M[j][3]*sol[3][1];
sol1[j][1] = s%R;
s = M[j][1]*sol[1][2] + M[j][2]*sol[2][2] + M[j][3]*sol[3][2];
sol1[j][2] = s%R;
s = M[j][1]*sol[1][3] + M[j][2]*sol[2][3] + M[j][3]*sol[3][3];
sol1[j][3] = s%R;
}
for (j = 1 ; j<= 3 ; j++)
{
for (q = 1 ; q<= 3 ; q++)
sol[j][q] = sol1[j][q];
}
}
for (i = 1 ; i < sir[0] ; i++)
{
long s = 0 ;
for (j = 1 ; j<= 3 ; j++)
{
{
s = MM[j][1]*M[1][1]%R + MM[j][2]*M[2][1]%R + MM[j][3]*M[3][1]%R;
MMM[j][1] = s%R;
s = MM[j][1]*M[1][2]%R + MM[j][2]*M[2][2]%R + MM[j][3]*M[3][2]%R;
MMM[j][2] = s%R;
s = MM[j][1]*M[1][3]%R + MM[j][2]*M[2][3]%R + MM[j][3]*M[3][3]%R;
MMM[j][3] = s%R;
}
}
for (j = 1 ; j<= 3 ; j++)
{
for (q = 1 ; q<= 3 ; q++)
MM[j][q] = MMM[j][q] , M[j][q] = MMM[j][q];
}
if (sir[i+1]==1)
{
for (j = 1 ; j<= 3 ; j++)
{
{
s = M[j][1]*sol[1][1]%R + M[j][2]*sol[2][1]%R + M[j][3]*sol[3][1]%R;
sol1[j][1] = s%R;
s = M[j][1]*sol[1][2]%R + M[j][2]*sol[2][2]%R + M[j][3]*sol[3][2]%R;
sol1[j][2] = s%R;
s = M[j][1]*sol[1][3]%R + M[j][2]*sol[2][3]%R + M[j][3]*sol[3][3]%R;
sol1[j][3] = s%R;
}
}
for (j = 1 ; j<= 3 ; j++)
{
for (q = 1 ; q<= 3 ; q++)
sol[j][q] = sol1[j][q];
}
}
}
fprintf(fout,"%lld\n",(sol[1][1]*x+sol[1][2]*y+sol[1][3]*z)%R);
for (q = 1 ; q<= 3 ; q++)
for (j = 1 ; j<= 3 ; j++)
MMM[q][j] = 0 , MM[q][j] = 0 , sol[q][j] = 0 , sol1[q][j] = 0 , M[q][j] = 0;
for (q = 1 ; q<= sir[0] ; q++)
sir[q] = 0;
sir[0] = 0;
}
return 0;
}