Pagini recente » Cod sursa (job #1518997) | Cod sursa (job #1519773) | Cod sursa (job #3282077) | Cod sursa (job #411913) | Cod sursa (job #3030702)
#include <fstream>
#include <vector>
using namespace std;
#define MOD 666013
ifstream cin("iepuri.in");
ofstream cout("iepuri.out");
vector<vector<int>> z(3,vector<int>(3));
vector<vector<int>> masca(3, vector<int>(3));
vector<vector<int>> xyz(3, vector<int>(3));
int A, B, C;
int X, Y, Z;
int n;
void mount()
{
masca[0][0] = z[0][0] = A;
masca[0][1] = z[0][1] = B;
masca[0][2] = z[0][2] = C;
masca[1][0] = z[1][0] = 1;
masca[1][1] = z[1][1] = 0;
masca[1][2] = z[1][2] = 0;
masca[2][0] = z[2][0] = 0;
masca[2][1] = z[2][1] = 1;
masca[2][2] = z[2][2] = 0;
xyz[0][0] = Z;
xyz[1][0] = Y;
xyz[2][0] = X;
xyz[0][1] = 0;
xyz[1][1] = 0;
xyz[2][1] = 0;
xyz[0][2] = 0;
xyz[1][2] = 0;
xyz[2][2] = 0;
}
vector<vector<int>> mult(vector<vector<int>> a, vector<vector<int>> b)
{
vector<vector<int>> c(3,vector<int>(3));
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
c[i][j] = 0;
for (int k = 0; k < 3; k++)
c[i][j] = (c[i][j] + a[i][k] * b[k][j]) % MOD;
}
}
return c;
}
vector<vector<int>> exp(int n, vector<vector<int>> a)
{
if (n == 1)
return masca;
if (n % 2 == 1)
return mult(a, exp(n - 1, a));
vector<vector<int>> P = exp(n / 2, a);
return mult(P, P);
}
int main()
{
int T;
cin >> T;
for (int asap = 0; asap < T; asap++)
{
cin >> X >> Y >> Z >> A >> B >> C >> n;
mount();
vector<vector<int>> fin(3, vector<int>(3));
fin = mult(exp(n - 2, z), xyz);
cout << fin[0][0] << '\n';
}
return 0;
}