Pagini recente » Cod sursa (job #167247) | Cod sursa (job #2591755) | Cod sursa (job #1303833) | Cod sursa (job #1077090) | Cod sursa (job #1820920)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
const int P = 666013;
short T, X, Y, Z, A, B, C;
int N;
void prod(int A[3][3], int B[3][3])
{
int C[3][3] = { { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 } };
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
{
for(int k = 0; k < 3; k++)
C[i][j] += A[i][k] * B[k][j];
}
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
A[i][j] = C[i][j] % P;
}
int putere(int n)
{
int PUT[3][3] = { { 0, 0 }, { 1, 0 }, { 0, 1 } };
int M[3][3] = { { 1, 0, 0 }, { 0, 1, 0 }, { 0, 0, 1 } };
PUT[0][2] = C;
PUT[1][2] = B;
PUT[2][2] = A;
while(n)
{
while(n % 2 == 0)
{
prod(PUT, PUT);
n /= 2;
}
prod(M, PUT);
n--;
}
return (X * M[0][2] + Y * M[1][2] + Z * M[2][2]) % P;
}
int main()
{
f >> T;
while(T--)
{
f >> X >> Y >> Z >> A >> B >> C >> N;
g << putere(N - 2);
if (T)
g << "\n";
}
f.close();
g.close();
return 0;
}