Pagini recente » Cod sursa (job #663147) | Cod sursa (job #1071290) | Cod sursa (job #2328495) | Cod sursa (job #1885941) | Cod sursa (job #2136614)
#include <fstream>
using namespace std;
const int MOD = 666013;
int X, Y, Z, A, B, C, N, t;
int a[5][5], b[5][5];
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
void Initialize(int matr[][5])
{
for (int i = 1;i <= 3;++i)
for (int j = 1;j <= 3;++j)
matr[i][j] = 0;
}
void Multiply(int x[][5], int y[][5])
{
int aux[5][5], s = 0;
for (int i = 1;i <= 3;++i)
for (int j = 1;j <= 3;++j)
{
s = 0;
for (int k = 1;k <= 3;++k)
s += (1LL * x[i][k] * y[k][j]) % MOD;
aux[i][j] = s;
}
for (int i = 1;i <= 3;++i)
for (int j = 1;j <= 3;++j)
x[i][j] = aux[i][j];
}
void lgput(int exp)
{
int unit[5][5];
Initialize(unit);
unit[1][1] = unit[2][2] = unit[3][3] = 1;
unit[1][2] = unit[1][3] = unit[2][1] = unit[2][3] = unit[3][1] = unit[3][2] = 0;
while (exp > 0)
{
if (exp & 1)
Multiply(unit, a);
Multiply(a, a);
exp >>= 1;
}
for (int i = 1;i <= 3;++i)
for (int j = 1;j <= 3;++j)
a[i][j] = unit[i][j];
}
int main()
{
fin >> t;
for (int k = 1;k <= t;++k)
{
fin >> X >> Y >> Z >> A >> B >> C >> N;
Initialize(a);
Initialize(b);
b[1][1] = X; b[1][2] = Y; b[1][3] = Z;
b[2][1] = b[2][2] = b[2][3] = b[3][1] = b[3][2] = b[3][3] = 0;
a[1][1] = a[1][2] = a[2][2] = a[3][1] = 0;
a[2][1] = a[3][2] = 1;
a[1][3] = C; a[2][3] = B; a[3][3] = A;
lgput(N - 2);
Multiply(b, a);
fout << b[1][3] << "\n";
}
fin.close();
fout.close();
return 0;
}