Pagini recente » Cod sursa (job #970258) | Cod sursa (job #2134202) | Cod sursa (job #2794006) | Cod sursa (job #1668183) | Cod sursa (job #1467083)
#include <iostream>
#include <fstream>
#define Mod 666013
using namespace std;
struct matr {
int Aa[3][3];
matr(int a00 = 0, int a01 = 0, int a02 = 0,
int a10 = 0, int a11 = 0, int a12 = 0,
int a20 = 0, int a21 = 0, int a22 = 0) {
Aa[0][0] = a00; Aa[0][1] = a01; Aa[0][2] = a02;
Aa[1][0] = a10; Aa[1][1] = a11; Aa[1][2] = a12;
Aa[2][0] = a20; Aa[2][1] = a21; Aa[2][2] = a22;
}
};
matr inm(matr &a, matr &b) {
int i, j, k;
matr c;
for (k = 0; k < 3; ++k)
for (j = 0; j < 3; ++j)
for (i = 0; i < 3; ++i)
c.Aa[k][j] = (c.Aa[k][j] + (1LL * a.Aa[k][i] * b.Aa[i][j])) % Mod;
return c;
}
int main() {
ifstream f("iepuri.in");
ofstream g("iepuri.out");
int k, masc, A, B, C, X, Y, Z,t;
f >> t;
while (t) {
f >> X >> Y >> Z >> A >> B >> C >> k;
matr a(0, 0, C,
1, 0, B,
0, 1, A),
s(1, 0, 0,
0, 1, 0,
0, 0, 1);
masc = 1;
k = k - 2;
while (masc <= k) {
if (k & masc)
s = inm(s, a);
a = inm(a, a);
masc = masc << 1;
}
int b = ((1LL * s.Aa[0][2] * X) +
(1LL * s.Aa[1][2] * Y) +
(1LL * s.Aa[2][2] * Z)) % Mod;
g << b << "\n";
t--;
}
f.close();
g.close();
return 0;
}