Pagini recente » Cod sursa (job #2619051) | Cod sursa (job #1671560) | Cod sursa (job #3200622) | Cod sursa (job #531638) | Cod sursa (job #1213411)
#include<fstream>
using namespace std;
ifstream fi("iepuri.in");
ofstream fo("iepuri.out");
const int MODULO = 666013;
int T,X,Y,Z,A,B,C,n;
void produs(int a[5][5], int b[5][5], int c[5][5]){
int r[5][5];
int i,j,k;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
r[i][j]=0;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
for(k=1;k<=3;k++)
r[i][j]=(r[i][j]+a[i][k]*b[k][j])%MODULO;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
c[i][j]=r[i][j];
}
void calcul(int X, int Y, int Z, int A, int B, int C, int n){
int rez[5][5],aux[5][5];
int sol;
//matricea unitate rez
rez[1][1]=1; rez[1][2]=0; rez[1][3]=0;
rez[2][1]=0; rez[2][2]=1; rez[2][3]=0;
rez[3][1]=0; rez[3][2]=0; rez[3][3]=1;
//matricea pe care o vom ridica la puterea n
aux[1][1]=0; aux[1][2]=0; aux[1][3]=C;
aux[2][1]=1; aux[2][2]=0; aux[2][3]=B;
aux[3][1]=0; aux[3][2]=1; aux[3][3]=A;
while(n>0){
if(n&1) produs(rez,aux,rez);
produs(aux,aux,aux);
n>>=1;
}
sol=(1LL*X*rez[1][1]+1LL*Y*rez[2][1]+1LL*Z*rez[3][1])%MODULO;
fo<<sol<<"\n";
}
int main(){
fi>>T;
for(;T>0;T--)
{
fi>>X>>Y>>Z>>A>>B>>C>>n;
calcul(X,Y,Z,A,B,C,n);
}
fi.close();
fo.close();
return 0;
}