Pagini recente » Cod sursa (job #940685) | Cod sursa (job #2953701) | Cod sursa (job #2104404) | Cod sursa (job #891804) | Cod sursa (job #1537792)
#include <stdio.h>
#include <stdlib.h>
#define MOD 666013
long long rez[5][5], i[5][5], ic[5][5], rezc[5][5];
int main(){
FILE*fin=fopen("iepuri.in", "r");
FILE*fout=fopen("iepuri.out", "w");
// x y z -> y z a*x+b*y+c*z
// 0 0 c
// 1 0 b
// 0 1 a
//1 zi-x
//2 zi-y
//3 zi-z
int n, j, p, nrzile, f, k, s, pr;
int a, b, c, x, y, z;
fscanf(fin, "%d", &n);
for(pr=1; pr<=n; pr++){
// printf("%d", pr);
fscanf(fin, "%d%d%d%d%d%d%d", &x, &y, &z, &a, &b, &c, &nrzile);
for(f=1; f<=3; f++)
for(j=1; j<=3; j++)
rez[f][j]=i[f][j]=rez[f][j]=ic[f][j]=0;
i[2][1]=i[3][2]=1;
i[1][3]=c; i[2][3]=b; i[3][3]=a;
ic[2][1]=ic[3][2]=1;
ic[1][3]=c; ic[2][3]=b; ic[3][3]=a;
rez[1][1]=rez[2][2]=rez[3][3]=1;
rezc[1][1]=rezc[2][2]=rezc[3][3]=1;
k=nrzile-2;
while(k>0){
if(k%2==1){
for(f=1; f<=3; f++)
for(j=1; j<=3; j++){
s=0;
for(p=1; p<=3; p++)
s=s+rezc[f][p]*i[p][j];
rez[f][j]=s;
}
k--;
}
else{
k/=2;
for(f=1; f<=3; f++)
for(j=1; j<=3; j++){
s=0;
for(p=1; p<=3; p++)
s=s+ic[f][p]*ic[p][j];
i[f][j]=s;
}
}
for(f=1; f<=3; f++)
for(j=1; j<=3; j++){
rez[f][j]%=MOD;
rezc[f][j]=rez[f][j];
i[f][j]%=MOD;
ic[f][j]=i[f][j];
}
}
fprintf(fout, "%d\n", (x*rez[1][3]%MOD+y*rez[2][3]%MOD+z*rez[3][3]%MOD)%MOD);
}
return 0;
}