Pagini recente » Cod sursa (job #1429155) | Cod sursa (job #2964180) | Cod sursa (job #1122998) | Cod sursa (job #2858083) | Cod sursa (job #1401472)
#include <fstream>
using namespace std;
fstream f("iepuri.in", ios::in);
fstream g("iepuri.out", ios::out);
const long long modulo = 666013;
long long t, n, i, j, k, nr, sol[5][5], a[5][5], b[5][5];
long long x, y, z, A, B, C, term;
void exp()
{
while (n > 0)
{
if (n % 2 != 0)
{
for (i = 1; i <= 3; i++)
for (k = 1; k <= 3; k++)
{
b[i][k] = 0;
for (j = 1; j <= 3; j++) b[i][k] = (b[i][k] + (sol[i][j] * a[j][k]) % modulo) % modulo;
}
for (i = 1; i <= 3; i++)
for (j = 1; j <= 3; j++)
{
sol[i][j] = b[i][j];
b[i][j] = 0;
}
n--;
}
for (i = 1; i <= 3; i++)
for (k = 1; k <= 3; k++)
{
b[i][k] = 0;
for (j = 1; j <= 3; j++) b[i][k] = (b[i][k] + (a[i][j] * a[j][k]) % modulo) % modulo;
}
for (i = 1; i <= 3; i++)
for (j = 1; j <= 3; j++)
{
a[i][j] = b[i][j];
b[i][j] = 0;
}
n = n / 2;
}
}
int main()
{
f >> t;
for (nr = 1; nr <= t; nr++)
{
f >> x >> y >> z >> A >> B >> C >> n;
a[1][1] = 0; a[1][2] = 0; a[1][3] = C;
a[2][1] = 1; a[2][2] = 0; a[2][3] = B;
a[3][1] = 0; a[3][2] = 1; a[3][3] = A;
n -= 2;
for (i = 1; i <= 3; i++)
for (j = 1; j <= 3; j++) if (i == j) sol[i][j] = 1;
else sol[i][j] = 0;
exp();
term = ((sol[1][3] * x) % modulo + (sol[2][3] * y) % modulo + (sol[3][3] * z) % modulo) % modulo;
g << term << '\n';
}
return 0;
}