Cod sursa(job #3262764)

Utilizator Benjamin4321234Benjamin Secara Benjamin4321234 Data 11 decembrie 2024 16:01:33
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <fstream>
using namespace std;
#define LL long long
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
int t,x,y,z,a,b,c,n;
struct mat{
 LL v[1][3];
};
mat constant,valori;
const int mod=666013;
mat rez(mat a, mat b){
mat c;
c.v[0][0]=((a.v[0][0]%mod*b.v[0][0]%mod)%mod+(a.v[0][1]%mod*b.v[0][1]%mod)%mod+(a.v[0][2]%mod*b.v[0][2]%mod)%mod)%mod;
c.v[0][1]=((c.v[0][0]%mod*b.v[0][0]%mod)%mod+(a.v[0][1]%mod*b.v[0][1]%mod)%mod+(a.v[0][2]%mod*b.v[0][2]%mod)%mod)%mod;
c.v[0][2]=((c.v[0][0]%mod*b.v[0][0]%mod)%mod+(c.v[0][1]%mod*b.v[0][1]%mod)%mod+(a.v[0][2]%mod*b.v[0][2]%mod)%mod)%mod;
return c;
}

mat exp_rapid(LL n, mat a){
if(n==1){
    return a;
}
else{
    if(n%2==0){
        mat p=exp_rapid(n/2,a);
        return rez(p,p);
    }
    else{
        mat p=exp_rapid(n-1,a);
        return rez(p,constant);
    }
}
}

int main()
{
    fin>>t;
    for(int i=1;i<=t;i++){
        fin>>x>>y>>z>>a>>b>>c>>n;
        valori.v[0][0]=a;
        valori.v[0][1]=b;
        valori.v[0][2]=c;
        constant.v[0][0]=x;
        constant.v[0][1]=y;
        constant.v[0][2]=z;
        mat ab;
        ab=exp_rapid(n,valori);
        fout<<ab.v[0][0]<<" "<<ab.v[0][1]<<" "<<ab.v[0][2]<<" ";
        fout<<(ab.v[0][0]+ab.v[0][1]+ab.v[0][2])%mod<<'\n';
    }

    return 0;
}