Pagini recente » Cod sursa (job #545433) | Cod sursa (job #2529070) | Cod sursa (job #804112) | Cod sursa (job #170290) | Cod sursa (job #964736)
Cod sursa(job #964736)
#include <fstream>
#include <cstring>
#define Modulo 666013
using namespace std;
ifstream f("iepuri.in"); ofstream g("iepuri.out");
long long t, x, y, z, a, b, c, n, M[4][4], aux[4][4];
inline void multiply(long long A[4][4], long long B[4][4])
{
long long sol[4][4];
for(long long i = 1; i <= 3; ++i)
for(long long j = 1; j <= 3; ++j)
{
sol[i][j] = 0;
for(long long k = 1; k <= 3; ++k)
sol[i][j] = (sol[i][j] % Modulo + ((A[i][k] % Modulo) * (B[k][j] % Modulo))) % Modulo;
}
memcpy(A, sol, sizeof(sol));
}
void power(long long A[4][4], long long m)
{
if(m == 0 || m == 1) return;
power(A, m / 2);
multiply(A, A);
if(m % 2) multiply(A, aux);
}
inline void solve()
{
M[1][1] = a, M[1][2] = b, M[1][3] = c,
M[2][1] = 1, M[2][2] = 0, M[2][3] = 0,
M[3][1] = 0, M[3][2] = 1, M[3][3] = 0;
memcpy(aux, M, sizeof(M));
power(M, n - 2);
}
int main()
{
f >> t;
while(t --)
{
f >> x >> y >> z >> a >> b >> c >> n;
solve();
g << ((M[1][1] * z) % Modulo + (M[1][2] * y) % Modulo + (M[1][3] * x) % Modulo) % Modulo << '\n';
}
}