Pagini recente » Cod sursa (job #860349) | Cod sursa (job #2549053) | Cod sursa (job #3195266) | Cod sursa (job #710781) | Cod sursa (job #3179474)
#include <fstream>
#define MOD 666013
using namespace std;
ifstream in("iepuri.in"); ofstream out("iepuri.out");
struct mat{
long long matrice[3][3];
};
mat inmultire_mat(mat A, mat B) {
mat C;
for (int i=0;i<3;i++)
for (int j=0;j<3;j++)
for (int k=0;k<3;k++)
C.matrice[i][j]=(C.matrice[i][j]+A.matrice[i][k]*B.matrice[k][j])%MOD;
return C;
}
mat exponentiere_mat(mat M, long long N) {
mat p; p.matrice[0][0]=1, p.matrice[1][1]=1, p.matrice[2][2]=1;
while (N) {
if (N%2==1) p=inmultire_mat(p,M);
M=inmultire_mat(M,M);
N/=2;
}
return p;
}
int main(){
int t; in >> t;
while(t--){
long long x,y,z,a,b,c,n;
in >> x >> y >> z >> a >> b >> c >> n;
mat m;
m.matrice[0][1]=1, m.matrice[1][2]=1, m.matrice[2][0]=c, m.matrice[2][1]=b, m.matrice[2][2]=a;
m=exponentiere_mat(m,n-2);
out << ((x*m.matrice[2][0] + y*m.matrice[2][1])%MOD + z*m.matrice[2][2])%MOD << endl;
}
return 0;
}