Pagini recente » Cod sursa (job #853355) | Cod sursa (job #3171302) | Cod sursa (job #535294) | Cod sursa (job #2668449) | Cod sursa (job #809706)
Cod sursa(job #809706)
#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,t,q,n;
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,"%i",&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,A,X);
inmult_matr1(X,X,X);
}
q=(A[2][0]%666013*x)+(A[2][1]%666013*y)+(A[2][2]%666013*z)%666013;
q=q%666013;
fprintf(g,"%d \n",q);}
return 0;
}