Pagini recente » Cod sursa (job #720530) | Cod sursa (job #1061368) | Cod sursa (job #2055594) | Monitorul de evaluare | Cod sursa (job #2230371)
#include <iostream>
#include <fstream>
using namespace std;
const int MOD = 666013;
int t, x, y, z, a, b, c, n, S[3][3];
bool prim(int n)
{
if (n < 2 || (n % 2 == 0 && n != 2))
return false;
for (int i = 3; i * i <= n; i+= 2)
if (n % i == 0)
return false;
return true;
}
void init()
{
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 3; ++j)
S[i][j] = 0;
S[0][0] = S[1][1] = S[2][2] = 1;
}
void prodMat(int A[3][3], int B[3][3])
{
int i, j, C[3][3];
for (i = 0; i <= 2; ++i)
for (j = 0; j <= 2; ++j)
{
C[i][j] = 0;
for (int k = 0; k <= 2; ++k)
C[i][j] = (C[i][j] + A[i][k] * B[k][j]) % MOD;
}
for (i = 0; i <= 2; ++i)
for (j = 0; j <= 2; ++j)
A[i][j] = C[i][j];
}
void putere(int y)
{
int M[3][3] = {{a, b, c}, {1, 0, 0}, {0, 1, 0}};
while (y)
{
if (y & 1)
prodMat(S, M);
prodMat(M, M);
y = y >> 1;
}
}
int main()
{
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
fin>>t;
for (int i = 1; i <= t; ++i)
{
fin>>x>>y>>z>>a>>b>>c>>n;
init();
putere( (n - 2) % (MOD - 1) );
fout<<( S[0][0] * z % MOD + S[0][1] * y % MOD + S[0][2] * x % MOD ) % MOD << "\n";
}
fin.close();
fout.close();
return 0;
}