Pagini recente » Cod sursa (job #2079696) | Cod sursa (job #998413) | Cod sursa (job #3126051) | Cod sursa (job #1662556) | Cod sursa (job #1498876)
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int Md = 666013;
int Nextint()
{
char S[100];
int Num = 0,i = 0;
bool Neg = 0;
scanf("%s",S);
if (S[0] == '-')
Neg = 1,i++;
for (;i < strlen(S);i++)
Num = Num * 10 + (S[i] - '0');
if (Neg)
Num *= -1;
return Num;
}
int T,N,A,B,C,X,Y,Z;
int M1[3][3];
void Mult(int A[3][3],int B[3][3],int C[3][3])
{
for (int i = 0;i < 3;i++)
for (int j = 0;j < 3;j++)
C[i][j] = 0;
for (int i = 0;i < 3;i++)
for (int j = 0;j < 3;j++)
for (int k = 0;k < 3;k++)
C[i][j] += (1LL * A[i][k] * B[k][j]) % Md;
}
void GetPow(int N)
{
int M2[3][3],M3[3][3];
memcpy(M2,M1,sizeof(M2));
while (N)
{
if (N & 1)
{
Mult(M1,M2,M3);
memcpy(M1,M3,sizeof(M1));
}
Mult(M2,M2,M3);
memcpy(M2,M3,sizeof(M2));
N >>= 1;
}
}
int main()
{
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
T = Nextint();
while (T--)
{
X = Nextint();Y = Nextint();Z = Nextint();
A = Nextint();B = Nextint();C = Nextint();
N = Nextint();
M1[0][0] = 0;M1[0][1] = 1;M1[0][2] = 0;
M1[1][0] = 0;M1[1][1] = 0;M1[1][2] = 1;
M1[2][0] = C;M1[2][1] = B;M1[2][2] = A;
GetPow(N - 1);
printf("%d\n",((1LL * M1[0][0] * X) % Md + (1LL * M1[0][1] * Y) % Md + (1LL * M1[0][2] * Z) % Md) % Md);
}
return 0;
}