Pagini recente » Cod sursa (job #282961) | Cod sursa (job #1427544) | Cod sursa (job #3005281) | Cod sursa (job #1661057) | Cod sursa (job #1466485)
#include <fstream>
#include <cstring>
using namespace std;
const int kMod = 666013;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
class Matrix {
public:
Matrix() {
memset(a, 0, sizeof a);
}
Matrix(int a00, int a01, int a02, int a10, int a11, int a12, int a20, int a21, int a22) {
a[0][0] = a00; a[0][1] = a01; a[0][2] = a02;
a[1][0] = a10; a[1][1] = a11; a[1][2] = a12;
a[2][0] = a20; a[2][1] = a21; a[2][2] = a22;
}
Matrix operator*(const Matrix &other) {
Matrix ans;
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 3; ++j) {
for (int k = 0; k < 3; ++k)
ans.a[i][j] += a[i][k] * other.a[k][j];
ans.a[i][j] %= kMod;
}
return ans;
}
int a[3][3];
};
void MultPow(Matrix &m, Matrix &base, int p) {
while (p) {
if (p & 1)
m = m * base;
base = base * base;
p >>= 1;
}
}
int main() {
int T;
fin >> T;
while (T--) {
int x, y, z, a, b, c, n;
fin >> x >> y >> z >> a >> b >> c >> n;
Matrix m(x, y, z,
0, 0, 0,
0, 0, 0),
base(0, 0, c,
1, 0, b,
0, 1, a);
MultPow(m, base, n - 2);
fout << m.a[0][2] << "\n";
}
return 0;
}