Pagini recente » Cod sursa (job #1633490) | Cod sursa (job #2975189) | Cod sursa (job #1094268) | Cod sursa (job #930133) | Cod sursa (job #1457092)
#include<fstream>
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
const int MOD = 666013;
class MATRICE {
int ln,cl;
long long MAT[3][3];
public:
MATRICE(int linii,int coloane,long long V[][3])
{
ln = linii;
cl = coloane;//0755 314 486 c negara
for(int i = 0 ; i < ln ; ++i)
for(int j = 0 ; j < cl ; ++j)
MAT[i][j] = V[i][j];
}
MATRICE(int linii,int coloane,long long V[][1])
{
ln = linii;
cl = coloane;//0755 314 486 c negara
for(int i = 0 ; i < ln ; ++i)
for(int j = 0 ; j < cl ; ++j)
MAT[i][j] = V[i][j];
}
MATRICE(int linii,int coloane)
{
ln = linii;
cl = coloane;
for(int i = 0 ; i < ln ; ++i)
for(int j = 0 ; j < cl ; ++j)
MAT[i][j] = 0;
}
MATRICE operator*(const MATRICE& A)
{
MATRICE nou(this->cl,A.ln);
for(int i = 0 ; i < this->ln ; ++i)
for(int j = 0 ; j < A.cl ; ++j)
for(int k = 0 ; k < this->ln ; ++k )
nou.MAT[i][j] += (1LL*this->MAT[i][k] * A.MAT[k][j]) % MOD;
return nou;
}
void afis()
{
out<<MAT[0][0]<<"\n";
}
};
long long T,A,B,C,X,Y,Z,N;
MATRICE pow(MATRICE INIT,long long e)
{
long long UN[3][3] = {
1,0,0,
0,1,0,
0,0,1
};
MATRICE rez(3,3,UN);
while(e){
if(e % 2){
rez = rez * INIT;
--e;
}
INIT = INIT * INIT;
e /= 2;
}
return rez;
}
void solve()
{
long long V[3][3] = {
0 , 1 , 0,
0 , 0 , 1,
C , B , A
};
long long P[3][1] = {
X,
Y,
Z
};
MATRICE M1(3,3,V);
MATRICE M2(3,1,P);
MATRICE R = pow(M1,N);
R = R * M2;
R.afis();
}
int main()
{
in>>T;
for( ; T ; --T){
in>>X>>Y>>Z>>A>>B>>C>>N;
solve();
}
return 0;
}