Pagini recente » Cod sursa (job #1933015) | Cod sursa (job #928077) | Cod sursa (job #700844) | Cod sursa (job #731664) | Cod sursa (job #3349189)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("iepuri.in");
ofstream fout("iepuri.out");
const int MOD = 666013;
long long I[3][3], D[3][3];
int N, X, Y, Z, A, B, C, T;
void inmultiremat(long long D[][3], long long C[][3])
{
long long E[3][3];
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
E[i][j] = 0;
for(int k = 0; k < 3; k++)
E[i][j] += D[i][k] * C[k][j];
}
}
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
D[i][j] = E[i][j] % MOD;
}
void putere(int n)
{
while(n)
{
if(n % 2)
inmultiremat(D, I);
inmultiremat(I, I);
n /= 2;
}
}
void creare()
{
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
D[i][j] = I[i][j] = 0;
D[0][0] = Z;
D[0][1] = Y;
D[0][2] = X;
I[0][0] = A;
I[1][0] = B;
I[2][0] = C;
I[0][1] = I[1][2] = 1;
}
void citire()
{
f >> T;
while(T--)
{
f >> X >> Y >> Z >> A >> B >> C >> N;
creare();
putere(N - 2);
fout << D[0][0] << '\n';
}
}
int main()
{
citire();
return 0;
}