Cod sursa(job #3369291)

Utilizator IzabelaJePloscaru Maria Izabela IzabelaJe Data 19 octombrie 2026 13:14:03
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.42 kb
#include <fstream>
#define MOD 666013
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
int T,X,Y,Z,A,B,C;
long long N;
long long mat[3][3],aux[3][3],P[3][3];
void produs(long long A[3][3],long long B[3][3],long long C[3][3]){
    for(int i=0;i<3;i++)
        for(int j=0;j<3;j++){
            C[i][j]=0;
            for(int k=0;k<3;k++)
                C[i][j]+=((A[i][k]%MOD)*(B[k][j]%MOD))%MOD;
        }
}
void copiere(long long A[3][3],long long B[3][3]){
    for(int i=0;i<3;i++)
        for(int j=0;j<3;j++)
            A[i][j]=B[i][j];
}
void initializare(long long mat[3][3],int A,int B,int C){
    mat[0][0]=A; mat[0][1]=B; mat[0][2]=C;
    mat[1][0]=1; mat[1][1]=0; mat[1][2]=0;
    mat[2][0]=0; mat[2][1]=1; mat[2][2]=0;
}
void initializareP(){
    for(int i=0;i<3;i++)
        for(int j=0;j<3;j++)
            if(i==j)
                P[i][j]=1;
            else
                P[i][j]=0;
}
int main()
{
    fin>>T;
    for(int q=1;q<=T;q++){
        fin>>X>>Y>>Z>>A>>B>>C>>N;
        N-=2;
        initializare(mat,A,B,C);
        initializareP();
        while(N!=0){
            if(N%2==1){
                produs(P,mat,aux);
                copiere(P,aux);
            }
            produs(mat,mat,aux);
            copiere(mat,aux);
            N/=2;
        }
        fout<<((P[0][0]*Z)%MOD+(P[0][1]*Y)%MOD+(P[0][2]*X)%MOD)%MOD<<endl;
    }
    return 0;
}