Pagini recente » Cod sursa (job #688289) | Cod sursa (job #983773) | Cod sursa (job #2705222) | Cod sursa (job #2367256) | Cod sursa (job #809132)
Cod sursa(job #809132)
#include <cstdio>
#include <cstdlib>
FILE*f;
FILE*g;
long long A[3][3],X[3][3];
void inmult_matr1(long long h[3][3], long long e[3][3], long long r[3][3])
{
long long c[3][3];
int i,j,k;
for (i=0;i<3;i++)
for (j=0;j<3;j++)
c[i][j]=0;
for (i=0;i<3;i++)
for (j=0;j<3;j++)
for (k=0;k<3;k++)
c[i][j]=((e[i][k]*r[k][j])%666013+c[i][j])%666013;
for (i=0;i<3;i++)
for (j=0;j<3;j++)
h[i][j]=c[i][j];
}
int main()
{
int i,j,o,a,b,d,x,y,z,k,t,n,q;
f=fopen("iepuri.in","r");
g=fopen("iepuri.out","w");
fscanf(f,"%d",&t);
for (o=1;o<=t;o++)
{
fscanf(f,"%d%d%d%d%d%d",&a,&b,&d,&x,&y,&z);
fscanf(f,"%d",&n);
for (i=0;i<3;i++)
for (j=0;j<3;j++)
A[i][j]=0;
A[0][0]=1;A[1][1]=1;A[2][2]=1;
X[0][0]=0;X[0][1]=1;X[0][2]=0;X[1][0]=0;X[1][1]=0;X[1][2]=1;X[2][0]=d;X[2][1]=b;X[2][2]=a;
for (i=0;(1<<i)<=(n);++i)
{
if (((1<<i)&(n))>0)
inmult_matr1(A,A,X);
inmult_matr1(X,X,X);
}
q=(A[0][0]%666013*x)+(A[0][1]%666013*y)+(A[0][2]%666013*z);
// q[0][0]=0;q[1][0]=0;q[2][0]=0;I[2][0]=z;
/* for (i=0;i<3;i++)
for (j=0;j<1;j++)
for (k=0;k<3;k++)
q[i][j]=(q[i][j]+A[i][k]*I[k][j])%666013;*/
fprintf(g,"%d \n",q);}
return 0;
}