Pagini recente » Cod sursa (job #779632) | Cod sursa (job #1618572) | Cod sursa (job #339844) | Cod sursa (job #2612145) | Cod sursa (job #1791632)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
void A_n(long long b[9], long long X, long long Y, long long Z, \
long long A, long long B, long long C, long long N){
long long a[9];
if(N == 1){
b[0] = 0;
b[1] = 1;
b[2] = 0;
b[3] = 0;
b[4] = 0;
b[5] = 1;
b[6] = A;
b[7] = B;
b[8] = C;
} else {
if(N % 2 == 0) {
A_n(b, X, Y, Z, A, B, C, N/2);
a[0] = (b[0] * b[0] + b[1] * b[3] + b[2] * b[6]) % 666013;
a[1] = (b[0] * b[1] + b[1] * b[4] + b[2] * b[7]) % 666013;
a[2] = (b[0] * b[2] + b[1] * b[5] + b[2] * b[8]) % 666013;
a[3] = (b[3] * b[0] + b[4] * b[3] + b[5] * b[6]) % 666013;
a[4] = (b[3] * b[1] + b[4] * b[4] + b[5] * b[7]) % 666013;
a[5] = (b[3] * b[2] + b[4] * b[5] + b[5] * b[8]) % 666013;
a[6] = (b[6] * b[0] + b[7] * b[3] + b[8] * b[6]) % 666013;
a[7] = (b[6] * b[1] + b[7] * b[4] + b[8] * b[7]) % 666013;
a[8] = (b[6] * b[2] + b[7] * b[5] + b[8] * b[8]) % 666013;
b[0] = a[0];
b[1] = a[1];
b[2] = a[2];
b[3] = a[3];
b[4] = a[4];
b[5] = a[5];
b[6] = a[6];
b[7] = a[7];
b[8] = a[8];
} else {
A_n(b, X, Y, Z, A, B, C, N - 1);
a[0] = b[3];
a[1] = b[4];
a[2] = b[5];
a[3] = b[6];
a[4] = b[7];
a[5] = b[8];
a[6] = A * b[0] + B * b[3] + C * b[6];
a[7] = A * b[1] + B * b[4] + C * b[7];
a[8] = A * b[2] + B * b[5] + C * b[8];
b[0] = a[0];
b[1] = a[1];
b[2] = a[2];
b[3] = a[3];
b[4] = a[4];
b[5] = a[5];
b[6] = a[6];
b[7] = a[7];
b[8] = a[8];
}
}
}
int main()
{
long long b[9], T, X, Y, Z, A, B, C, N, i;
fin>>T;
for (i = 1; i <= T; ++i){
fin>>X>>Y>>Z>>A>>B>>C>>N;
A_n(b, X, Y, Z, A, B, C, N);
fout<<b[8] % 666013<<'\n';
}
return 0;
}