Pagini recente » Cod sursa (job #2161919) | Cod sursa (job #2700377) | Cod sursa (job #3138272) | Cod sursa (job #2402759) | Cod sursa (job #2337062)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("iepuri.in");
ofstream fout ("iepuri.out");
const int MOD=666013;
struct Mat
{
long long M[3][3];
};
const Mat matUnit=
{
1,0,0,
0,1,0,
0,0,1
};
long long T,X,Y,Z,A,B,C,N;
Mat produs (Mat a,Mat b)
{
Mat aux;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
aux.M[i][j]=0;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
for(int k=0;k<3;k++)
aux.M[i][j]=aux.M[i][j]+a.M[i][k]*b.M[k][j];
return aux;
}
Mat pow(Mat mat,long long n)
{
if(n==0) return matUnit;
if(n%2==0) return pow(produs(mat,mat),n/2);
return produs(mat,pow(produs(mat,mat),n/2));
}
void solve()
{
Mat AR,matInit;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
AR.M[i][j]=matInit.M[i][j]=0;
AR.M[0][0]=X;
AR.M[0][1]=Y;
AR.M[0][2]=Z;
matInit.M[0][2]=C;
matInit.M[1][2]=B;
matInit.M[2][2]=A;
matInit.M[1][0]=1;
matInit.M[2][1]=1;
fout<<produs(AR,pow(matInit,N-2)).M[0][2]<<'\n';
}
void read()
{
fin>>T;
while(T--)
{
fin>>X>>Y>>Z>>A>>B>>C>>N;
solve();
}
}
int main()
{
read();
return 0;
}