Pagini recente » Cod sursa (job #2976616) | Cod sursa (job #1235506) | Cod sursa (job #421388) | Cod sursa (job #1054031) | Cod sursa (job #2153477)
#include <bits/stdc++.h>
#define MOD 666013
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
int T, A, B, C, X, Y, Z, N;
int act[3][3], rsp[3][3], ORI[3][3];
void getMatrix()
{
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
{
act[i][j] = rsp[i][j];
rsp[i][j] = 0;
}
}
void recurenta(int putere)
{
if (putere <= 1)
{
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
rsp[i][j] = ORI[i][j];
return;
}
if (putere % 2 == 0)
{
recurenta(putere / 2);
getMatrix();
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
for (int k = 0; k < 3; k++)
rsp[i][j] = (rsp[i][j] + (act[i][k] * act[k][j]) % MOD) % MOD;
return;
}
recurenta(putere - 1);
getMatrix();
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
for (int k = 0; k < 3; k++)
rsp[i][j] = (rsp[i][j] + (act[i][k] * ORI[k][j]) % MOD) % MOD;
}
int main()
{
fin >> T;
while (T--)
{
fin >> X >> Y >> Z >> A >> B >> C >> N;
int original[3][3] = {{0, 0, C},{1, 0, B},{0, 1, A}};
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
ORI[i][j] = original[i][j];
recurenta(N - 2);
int D3[3] = {X, Y, Z};
int DX[3] = {0, 0, 0};
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
DX[i] = (DX[i] + (D3[j] * rsp[j][i]) % MOD) % MOD;
fout << DX[2] << "\n";
}
return 0;
}