Pagini recente » Cod sursa (job #2115073) | Cod sursa (job #187406) | Cod sursa (job #2084723) | Cod sursa (job #2311478) | Cod sursa (job #3238747)
#include <bits/stdc++.h>
std :: ifstream in ("iepuri.in");
std :: ofstream out ("iepuri.out");
const long long DIM = 3;
const long long mod = 666013;
long long t;
long long n;
long long x;
long long y;
long long z;
long long a;
long long b;
long long c;
long long start[DIM][DIM];
long long p[DIM][DIM];
long long A[DIM][DIM];
void init()
{
for(long long i = 0; i < 3; i ++)
{
for(long long j = 0; j < 3; j ++)
{
start[i][j] = 0;
p[i][j] = 0;
A[i][j] = 0;
}
}
start[0][0] = z;
start[0][1] = y;
start[0][2] = x;
for(long long i = 0; i < 3; i ++)
{
p[i][i] = 1;
}
A[0][0] = a;
A[1][0] = b;
A[2][0] = c;
A[0][1] = 1;
A[1][2] = 1;
}
void multiply(long long a[3][3], long long b[3][3])
{
long long c[3][3];
for(long long i = 0; i < 3; i ++)
{
for(long long j = 0; j < 3; j ++)
{
c[i][j] = 0;
}
}
for(long long i = 0; i < 3; i ++)
{
for(long long j = 0; j < 3; j ++)
{
for(long long k = 0; k < 3; k ++)
{
c[i][j] = (1ll * c[i][j] + a[i][k] * b[k][j]) % mod;
}
}
}
for(long long i = 0; i < 3; i ++)
{
for(long long j = 0; j < 3; j ++)
{
a[i][j] = c[i][j];
}
}
}
void pow(long long n)
{
while(n)
{
if(n % 2)
{
multiply(p, A);
}
multiply(A, A);
n /= 2;
}
}
int main()
{
in >> t;
while(t --)
{
in >> x >> y >> z >> a >> b >> c >> n;
init();
pow(n - 2);
multiply(start, p);
out << start[0][0] << '\n';
}
return 0;
}