Cod sursa(job #3179474)

Utilizator StefanStratonStefan StefanStraton Data 3 decembrie 2023 18:24:41
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#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;
}