Pagini recente » Cod sursa (job #2599507) | Cod sursa (job #826777) | Cod sursa (job #2742102) | Cod sursa (job #689473) | Cod sursa (job #1405500)
#include <stdio.h>
#define MOD 666013
FILE *f=fopen("iepuri.in","r"),*g=fopen("iepuri.out","w");
long long t,X,Y,Z,A,B,C,n,a[4][4],r[4][4];
void initializare(long long q[4][4]){
q[1][1]=A; a[1][2]=B; q[1][3]=C;
q[2][1]=1; q[2][2]=0; q[2][3]=0;
q[3][1]=0; q[3][2]=1; q[3][3]=0;
}
void initializare_r(long long q[4][4]){
q[1][1]=1; a[1][2]=0; q[1][3]=0;
q[2][1]=0; q[2][2]=1; q[2][3]=0;
q[3][1]=0; q[3][2]=0; q[3][3]=1;
}
void produs(long long d[4][4],long long e[4][4],long long f[4][4]){
long long i,j,k;
for(i=1; i<=3; i++){
for(j=1; j<=3; j++){
f[i][j]=0;
for(k=1; k<=3; k++){
f[i][j]+=(d[i][k]*e[k][j]) % MOD;
f[i][j]=f[i][j]%MOD;
}
}
}
}
void init1(long long q[4][4]){
for(long long i=1;i<=3; i++){
for(long long j=1; j<=3; j++){
q[i][j]=0;
}
}
}
void copiere(long long d[4][4],long long e[4][4]){
long long i,j;
for(i=1; i<=3; i++){
for(j=1; j<=3; j++){
d[i][j]=e[i][j];
}
}
}
void rezolvare(long long b){
long long i,j,x[4][4];
init1(x);
init1(r);
for(i=1;i<=3;i++)
r[i][i] = 1;
while(b!=0){
if(b%2==1){
init1(x);
produs(r,a,x);
copiere(r,x);
}
init1(x);
produs(a,a,x);
copiere(a,x);
b=b/2;
}
}
void citire(){
long long i,s=0;
fscanf(f,"%lld\n",&t);
for(i=1; i<=t; i++){
fscanf(f,"%lld %lld %lld %lld %lld %lld %lld\n",&X,&Y,&Z,&A,&B,&C,&n);
initializare(a);
// initializare_r(r);
rezolvare(n-2);
s=0;
s=r[1][1]*Z+r[1][2]*Y+r[1][3]*X;
s=s%MOD;
fprintf(g,"%lld\n",s);
}
}
int main()
{
citire();
return 0;
}