Pagini recente » Cod sursa (job #2761786) | Cod sursa (job #1916017) | Cod sursa (job #709194) | Cod sursa (job #444215) | Cod sursa (job #2691406)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
long long A[5][5], B[5][5], C[5][5], sol;
int a, b, c, x, y, z, n, t;
void prod (long long A[5][5], long long B[5][5], long long C[5][5])
{
int i, j, k;
for(int i = 1; i <= 3; i++)
for(int j = 1; j <= 3; j++)
C[i][j] = 0;
for(int i = 1; i <= 3; i++)
{
for(int j = 1; j <= 3; j++)
for(int k = 1; k <= 3; k++)
{
C[i][j] += ((A[i][k]) * (B[k][j])) % 666013;
C[i][j] %= 666013;
}
}
}
void eg(long long A[5][5], long long B[5][5])
{
for(int i = 1; i <= 3; i++)
for(int j = 1; j <= 3; j++)
B[i][j] = A[i][j];
}
int main()
{
fin >> t;
while(t--)
{
fin >> x >> y >> z;
fin >> a >> b >> c >> n;
n -= 2;
for(int i = 1; i <= 3; i++)
{
for(int j = 1; j <= 3; j++)
A[i][j] = 0;
A[i][i] = 1;
}
B[1][1] = a;
B[1][2] = b;
B[1][3] = c;
B[2][1] = B[3][2] = 1;
B[2][2] = B[2][3] = B[3][1] = B[3][3] = 0;
while(n > 0)
{
if ((n & 1) == 1)
{
prod(A, B, C);
eg(C, A);
}
prod(B, B, C);
eg(C, B);
n >>= 1;
}
sol = ((A[1][1] * z) % 666013 + (A[1][2] * y) % 666013 + (A[1][3] * x) % 666013) % 666013;
fout << sol << "\n";
}
return 0;
}