Pagini recente » Cod sursa (job #140244) | Cod sursa (job #1295578) | Cod sursa (job #2302528) | Cod sursa (job #2418958) | Cod sursa (job #807794)
Cod sursa(job #807794)
#include <cstdio>
#include <cstdlib>
FILE*f;
FILE*g;
long A[3][3],X[3][3];
void inmult_matr1(long e[3][3], long r[3][3])
{
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++)
A[i][j]=c[i][j];
}
void inmult_matr2(long e[3][3], long r[3][3])
{
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++)
X[i][j]=c[i][j];
}
int main()
{
int i,j,o,a,b,d,x,y,z,k,t,n;
int I[3][1],q[3][1];
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);
I[0][0]=x;I[1][0]=y;I[2][0]=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-2);++i)
{
if (((1<<i)&(n-2))>0)
inmult_matr1(A,X);
inmult_matr2(X,X);
}
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[0][2]);}
return 0;
}