Pagini recente » Cod sursa (job #447476) | Cod sursa (job #939474) | Cod sursa (job #609018)
Cod sursa(job #609018)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int MOD=666013;
int I[4][4],M[4][4];
int T,X,Y,Z,A,B,C,N;
void mult(int A[4][4], int B[4][4], int C[4][4]) {
int i,j,k;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
for(k=1;k<=3;k++)
C[i][j]= (C[i][j] + (long long) A[i][k] * B[k][j]) % MOD;
}
void explog(int I[4][4], int P) {
int K[4][4],AUX[4][4];
K[1][1]=0; K[1][2]=1; K[1][3]=0;
K[2][1]=0; K[2][2]=0; K[2][3]=1;
K[3][1]=C; K[3][2]=B; K[3][3]=A;
while(P>0) {
if(P&1) {
memset(AUX,0,sizeof(AUX));
mult(K,I,AUX);
memcpy(I,AUX,sizeof(AUX));
}
memset(AUX,0,sizeof(AUX));
mult(K,K,AUX);
memcpy(K,AUX,sizeof(AUX));
P/=2;
}
}
int main() {
for(fin >> T; T; T--) {
fin >> X >> Y >> Z >> A >> B >> C >> N;
memset(I,0,sizeof(I));
I[1][1]=X; I[2][1]=Y; I[3][1]=Z;
explog(I,N-2);
fout << I[3][1] << '\n';
}
}