Pagini recente » Cod sursa (job #2076528) | Cod sursa (job #2960882) | Cod sursa (job #2332741) | Cod sursa (job #1284139) | Cod sursa (job #807784)
Cod sursa(job #807784)
#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=1;i<=3;i++)
for (j=1;j<=3;j++)
c[i][j]=0;
for (i=1;i<=3;i++)
for (j=1;j<=3;j++)
for (k=1;k<=3;k++)
c[i][j]=((e[i][k]*r[k][j])%666013+c[i][j])%666013;
for (i=1;i<=3;i++)
for (j=1;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=1;i<=3;i++)
for (j=1;j<=3;j++)
c[i][j]=0;
for (i=1;i<=3;i++)
for (j=1;j<=3;j++)
for (k=1;k<=3;k++)
c[i][j]=((e[i][k]*r[k][j])%666013+c[i][j])%666013;
for (i=1;i<=3;i++)
for (j=1;j<=3;j++)
X[i][j]=c[i][j];
}
int main()
{
int i,j,o,a,b,c,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,&c,&x,&y,&z);
// fscanf(f,"%d",&n);
I[1][1]=x;I[2][1]=y;I[3][1]=z;
fscanf(f,"%d",&n);
for (i=1;i<=3;i++)
for (j=1;j<=3;j++)
A[i][j]=0;
A[1][1]=1;A[2][2]=1;A[3][3]=1;
X[1][1]=0;X[1][2]=1;X[1][3]=0;X[2][1]=0;X[2][2]=0;X[2][3]=1;X[3][1]=c;X[3][2]=b;X[3][3]=a;
for (i=0;(1<<i)<=(n-2);++i)
{
if (((1<<i)&(n-2))>0)
inmult_matr1(A,X);
inmult_matr2(X,X);
}
q[1][1]=0;q[2][1]=0;q[3][1]=0;I[3][1]=z;
for (i=1;i<=3;i++)
for (j=1;j<=1;j++)
for (k=1;k<=3;k++)
q[i][j]=(q[i][j]+A[i][k]*I[k][j])%666013;
fprintf(g,"%d \n",q[1][3]);}
return 0;
}