Pagini recente » Cod sursa (job #213760) | Cod sursa (job #3268043) | Cod sursa (job #2056971) | Cod sursa (job #769830) | Cod sursa (job #2742771)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
void inmultire (long long a[3][3], long long b[3][3]) {
long long c[3][3];
for (int i=0; i<3; i++) {
for (int j=0; j<3; j++) {
c[i][j]=0;
for (int k=0; k<3; k++)
c[i][j]+=a[i][k]*b[k][j];
}
}
for (int i=0; i<3; i++)
for (int j=0; j<3; j++)
a[i][j]=c[i][j];
}
void ExpR1(long long x[][3], int n)
{
long long rez[][3]={{1,0,0},{0,1,0},{0,0,1}};
for(int p=1;p<=n;p<<=1)
{
if(n&p)
inmultire(rez, x);
inmultire(x, x);
}
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
x[i][j]=rez[i][j];
}
int main() {
int T, X, Y, Z, A, B, C, N;
f >> T;
for (int i=1; i<=T; i++) {
f >> X >> Y >> Z >> A >> B >> C >> N;
long long m[][3]={{0,0,C},{1,0,B},{0,1,A}};
ExpR1(m, N-2);
g << X*m[0][2]+Y*m[1][2]+Z*m[2][2] << endl;
}
return 0;
}