Pagini recente » Cod sursa (job #2124649) | Cod sursa (job #2579620) | Cod sursa (job #694051) | Cod sursa (job #2278981) | Cod sursa (job #1513412)
#include <cstdio>
using namespace std;
int t, x, y, z, a, b, c, n;
void mul(int A[][5], int B[][5])
{
int C[5][5];
for(int i=1; i<=3; ++i)
for(int j=1; j<=3; ++j)
C[i][j]=A[i][1]*B[1][j]+A[i][2]*B[2][j]+A[i][3]*B[3][j];
for(int i=1; i<=3; ++i)
for(int j=1; j<=3; ++j)
A[i][j]=C[i][j];
}
int put(int n)
{
int I[5][5], A[5][5];
for(int i=1; i<=3; ++i)
for(int j=1; j<=3; ++j)
I[i][j]=(i==j);
A[1][1]=a, A[1][2]=1, A[1][3]=0;
A[2][1]=b, A[2][2]=0, A[2][3]=1;
A[3][1]=c, A[3][2]=0, A[3][3]=0;
for(int mask=1; mask<=n; mask<<=1)
{
if(mask&n)
mul(I, A);
mul(A, A);
}
return z*I[1][1]+y*I[2][1]+x*I[3][1];
}
int main()
{
freopen("iepuri.in", "r", stdin);
freopen("iepuri.out", "w", stdout);
scanf("%d", &t);
while(t--)
{
scanf("%d%d%d%d%d%d%d", &x, &y, &z, &a, &b, &c, &n);
printf("%d\n", put(n-2));
}
return 0;
}