Pagini recente » Cod sursa (job #1346684) | Cod sursa (job #1869097) | Cod sursa (job #1545928) | Cod sursa (job #532327) | Cod sursa (job #1404943)
#include <fstream>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int MOD = 666013;
int T, N, X, Y, Z, A, B, C;
struct matrice
{
int mat[5][5];
};
matrice M, sol;
matrice mult(matrice a, matrice b)
{
matrice aux;
for (int i = 1; i <= 3; ++i)
for (int j = 1; j <= 3; ++j)
{
aux.mat[i][j] = 0;
for (int k = 1; k <= 3; ++k)
aux.mat[i][j] = (aux.mat[i][j] + (a.mat[i][k] * b.mat[k][j]) % MOD) % MOD;
}
return aux;
}
matrice ridPutere(matrice M, int P)
{
matrice aux;
if (P == 1)
return M;
aux = ridPutere(M, P / 2);
aux = mult(aux, aux);
if (P % 2 == 1)
aux = mult(aux, M);
return aux;
}
int main()
{
fin >> T;
while (T--)
{
fin >> X >> Y >> Z >> A >> B >> C >> N;
M.mat[1][1] = 0;
M.mat[1][2] = 1;
M.mat[1][3] = 0;
M.mat[2][1] = 0;
M.mat[2][2] = 0;
M.mat[2][3] = 1;
M.mat[3][1] = C;
M.mat[3][2] = B;
M.mat[3][3] = A;
sol = ridPutere(M, N);
fout << ((sol.mat[1][1] * X) % MOD + (sol.mat[1][2] * Y) % MOD + (sol.mat[1][3] * Z) % MOD) % MOD << '\n';
}
fin.close();
fout.close();
return 0;
}