Pagini recente » Cod sursa (job #1469719) | Cod sursa (job #293048) | Cod sursa (job #467054) | Cod sursa (job #2752212) | Cod sursa (job #3283630)
#include <bits/stdc++.h>
#define MOD 666013
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
int T, X, Y, Z, A, B, C, N;
int a[3][3], b[3][3], c[3][3];
void Copiaza(int a[3][3], int b[3][3])
{
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
a[i][j] = b[i][j];
}
void Inmulteste(int a[3][3], int b[3][3], int c[3][3])
{
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
{
int suma = 0;
for (int k = 0; k < 3; k++)
suma = (suma + 1LL * a[i][k] * b[k][j]) % MOD;
c[i][j] = suma;
}
}
void LogExpo(int a[3][3], int Put, int b[3][3])
{
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
b[i][j] = (i == j);
while (Put > 0)
{
if (Put % 2 == 1)
{
Inmulteste(b, a, c);
Copiaza(b, c);
}
Put /= 2;
Inmulteste(a, a, c);
Copiaza(a, c);
}
}
int main()
{
fin >> T;
while (T--)
{
fin >> X >> Y >> Z >> A >> B >> C >> N;
a[0][0] = a[0][1] = a[1][1] = a[2][0] = 0;
a[1][0] = a[2][1] = 1;
a[0][2] = C; a[1][2] = B; a[2][2] = A;
LogExpo(a, N - 2, b);
c[0][0] = X; c[0][1] = Y; c[0][2] = Z;
for (int i = 1; i < 3; i++)
for (int j = 0; j < 3; j++)
c[i][j] = 0;
Inmulteste(c, b, a);
fout << a[0][2]<< "\n";
}
return 0;
}