Pagini recente » Cod sursa (job #2125004) | Cod sursa (job #56616) | Cod sursa (job #221615) | Cod sursa (job #2259946) | Cod sursa (job #2071637)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
void inm_matr(long long A[3][3], long long B[3][3])
{
long long AB[3][3]={0,0};
int i, j, k;
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++)
{
for(k = 0; k < 3; k++)
AB[i][j] += ( (A[i][k] * B[k][j]) % 666013 );
AB[i][j] %= 666013;
}
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++)
B[i][j] = AB[i][j];
}
void inm_clasica (long long A[3][3])
{
long long Q[3][3] = {0, 0};
int k, i, j;
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++)
Q[i][j] = A[i][j];
for(k=1; k<=7; k++) ///alege puterea
{
inm_matr(Q, A);
/*for(i = 0; i<3; i++ )
{
for(j = 0; j<3; j++)
cout<<M[i][j]<<" ";
cout<<endl;
}
cout<<endl;*/
}
}
int main()
{
int T, X, Y, Z, A, B, C, i;
long long N;
fin>>T;
for(i=1; i<=T; i++)
{
fin>>X>>Y>>Z>>A>>B>>C>>N;
long long M[3][3]={0,0}, XYZ[3][3]={0,0};
M[0][1]=1;
M[1][2]=1;
M[2][0]=C, M[2][1]=B, M[2][2]=A;
XYZ[0][0]=X;
XYZ[1][0]=Y;
XYZ[2][0]=Z;
while ( N >1 )
{
if(N%2 == 0)
{
inm_matr(M, M);
N /= 2;
}
else
{
inm_matr(M, XYZ);
N--;
}
}
inm_matr(M, XYZ);
fout<<XYZ[0][0]<<endl;
}
fin.close();
fout.close();
return 0;
}