Pagini recente » Cod sursa (job #2009125) | Cod sursa (job #2945759) | Cod sursa (job #710340) | Cod sursa (job #2965766) | Cod sursa (job #1824289)
#include <fstream>
#include <cstring>
using namespace std;
const int MOD = 666013;
int A, B, C, X, Y, Z, N;
void inmul(int D[][3], int E[][3])
{
int F[3][3];
for(int i = 0; i < 3; ++i)
for(int j = 0; j < 3; ++j)
{
long long aux = 0;
for(int k = 0; k < 3; ++k)
aux += ((long long)D[i][k]) * E[k][j];
F[i][j] = aux % MOD;
}
memcpy(D, F, sizeof(F));
}
int putere(int n)
{
int M[3][3] = {{0, 0, C}, {1, 0, B}, {0, 1, A}};
int P[3][3] = {{X, Y, Z}, {0, 0, 0}, {0, 0, 0}};
while(n > 0)
{
while((n & 1) == 0)
{
inmul(M, M);
n >>= 1;
}
inmul(P, M);
n--;
}
return P[0][2];
}
int main()
{
int t;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
fin >> t;
while(t--)
{
fin >> X >> Y >> Z >> A >> B >> C >> N;
fout << putere(N - 2) << endl;
}
fin.close();
fout.close();
return 0;
}