Pagini recente » Cod sursa (job #1886851) | Cod sursa (job #1176889) | Cod sursa (job #2318668) | Cod sursa (job #2191519) | Cod sursa (job #810173)
Cod sursa(job #810173)
#include<stdio.h>
FILE*f=fopen("iepuri.in","r");
FILE*g=fopen("iepuri.out","w");
int t,n,A,B,C,x,y,z;
long long a[4][4],p[4][4],X[4][4];
void mult(long long a[][4],long long b[][4],long long c[][4])
{
a[1][1]=b[1][1]*c[1][1]+b[1][2]*c[2][1]+b[1][3]*c[3][1];
a[1][2]=b[1][1]*c[1][2]+b[1][2]*c[2][2]+b[1][3]*c[3][2];
a[1][3]=b[1][1]*c[1][3]+b[1][2]*c[2][3]+b[1][3]*c[3][3];
a[2][1]=b[2][1]*c[1][1]+b[2][2]*c[2][1]+b[2][3]*c[3][1];
a[2][2]=b[2][1]*c[1][2]+b[2][2]*c[2][2]+b[2][3]*c[3][2];
a[2][3]=b[2][1]*c[1][3]+b[2][2]*c[2][3]+b[2][3]*c[3][3];
a[3][1]=b[3][1]*c[1][1]+b[3][2]*c[2][1]+b[3][3]*c[3][1];
a[3][2]=b[3][1]*c[1][2]+b[3][2]*c[2][2]+b[3][3]*c[3][2];
a[3][3]=b[3][1]*c[1][3]+b[3][2]*c[2][3]+b[3][3]*c[3][3];
for(int i=1;i<=3;++i)
for(int j=1;j<=3;++j)
b[i][j]=a[i][j]%666013;
}
void put(int n)
{
for(int i=1;i<=3;++i)
for(int j=1;j<=3;++j)
p[i][j]=X[i][j]=0;
p[1][1]=p[2][2]=p[3][3]=1;
X[1][2]=X[2][3]=1;
X[3][1]=C;
X[3][2]=B;
X[3][3]=A;
while(n!=0){
if(n%2==1)
mult(a,p,X);
mult(a,X,X);
n/=2;
}
}
int main()
{
fscanf(f,"%d",&t);
for(int o=1;o<=t;++o)
{
fscanf(f,"%d%d%d%d%d%d%d",&x,&y,&z,&A,&B,&C,&n);
put(n-2);
fprintf(g,"%d\n",(p[3][1]*x+p[3][2]*y+p[3][3]*z)%666013);
}
fclose(f);
fclose(g);
return 0;
}