Pagini recente » Cod sursa (job #1333855) | Cod sursa (job #1801254) | Cod sursa (job #974188) | Cod sursa (job #1498492) | Cod sursa (job #997981)
Cod sursa(job #997981)
#include <cstdio>
#include <cstdlib>
using namespace std;
const int MOD = 666013;
int T, X, Y, Z, A, B, C, N, Mat[3][3], Aux[3][3];
void Mult(int A[3][3], int B[3][3])
{
int C[3][3], i, j, k;
for(int i = 0; i < 3; ++ i)
for(int j = 0; j < 3; ++ j)
{
long long Now = 0;
for(int k = 0; k < 3; ++ k)
Now += 1LL * A[i][k] * B[k][j];
C[i][j] = Now % MOD;
}
for(int i = 0; i < 3; ++ i)
for(int j = 0; j < 3; ++ j)
A[i][j] = C[i][j];
}
int main()
{
freopen("iepuri.in", "r", stdin);
freopen("iepuri.out", "w", stdout);
scanf("%i", &T);
for(; T; T --)
{
scanf("%i %i %i %i %i %i %i", &X, &Y, &Z, &A, &B, &C, &N);
for(int i = 0; i < 3; ++ i)
for(int j = 0; j < 3; ++ j)
Mat[i][j] = Aux[i][j] = 0;
Mat[0][0] = X, Mat[0][1] = Y, Mat[0][2] = Z;
Aux[1][0] = Aux[2][1] = 1;
Aux[0][2] = C, Aux[1][2] = B, Aux[2][2] = A;
N -= 2;
while(N)
{
if(N % 2) Mult(Mat, Aux);
Mult(Aux, Aux);
N /= 2;
}
printf("%i\n", Mat[0][2]);
}
return 0;
}