Pagini recente » Cod sursa (job #1676022) | Cod sursa (job #3263794) | Cod sursa (job #1422686) | Cod sursa (job #695824) | Cod sursa (job #2264177)
#include <fstream>
#define nr 666013
std::ifstream INPUT_FILE("iepuri.in");
std::ofstream OUTPUT_FILE("iepuri.out");
long long A[3][3],I[3][3],T, x, y, z, a, b, c, n;
void init(){
for(long i=0;i<3;i++){
for(long j=0;j<3;j++){
if(i==j) I[i][j]=1;
else I[i][j]=0;
}
}
A[0][0]=0;
A[0][1]=0;
A[0][2]=c;
A[1][0]=1;
A[1][1]=0;
A[1][2]=b;
A[2][0]=0;
A[2][1]=1;
A[2][2]=a;
}
void multiply(long long A[3][3], long long B[3][3]){
long long tmp[3][3];
for(int i=0;i<3;i++){
for(int j=0;j<3;j++) tmp[i][j]=0;
}
for (int i = 0; i<3; i++){
for (int j = 0; j<3; j++){
for (int k = 0; k<3; k++) tmp[i][j] = (tmp[i][j]+A[i][k]*B[k][j])%nr;
}
}
for (int i = 0; i<3; i++){
for (int j = 0; j<3; j++) A[i][j] = tmp[i][j];
}
}
void rowRowFightThePower(long long k) {
if(k>1){
if(k%2){
multiply(I,A);
rowRowFightThePower(k-1);
}else{
multiply(A, A);
rowRowFightThePower(k/2);
}
}else return;
}
int main()
{
/*init();
INPUT_FILE>> k;
rowRowFightThePower(k);
//multiply(M,Z);
OUTPUT_FILE << M[1][0];*/
INPUT_FILE>>T;
for (int i = 0; i < T; ++i) {
INPUT_FILE>>x>>y>>z>>a>>b>>c>>n;
init();
rowRowFightThePower(n-2);
multiply(A,I);
long long result = (( x * A[0][2]) % nr + ( y * A[1][2]) % nr + (z * A[2][2]) % nr) % nr;
OUTPUT_FILE<<result<<"\n";
}
}