Cod sursa(job #3325778)

Utilizator mariusharabariMarius Harabari mariusharabari Data 26 noiembrie 2025 14:43:02
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.86 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("iepuri.in");
ofstream fout("iepuri.out");

const long long MOD=666013;
int t;

void afis(vector <vector <long long>> a){
cout<<endl;
    for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            cout<<a[i][j]<<' ';
        }
        cout<<endl;
    }
}


vector <vector <long long>> Inmultire(vector <vector <long long>> a, vector <vector <long long>> b){
    vector <vector <long long>> c(3, vector<long long>(3, 0));
    for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            for(int k=0;k<3;k++){
                c[i][j]=(c[i][j]+((a[i][k]%MOD)*(b[k][j]%MOD)%MOD))%MOD;
            }
        }
    }
    /*cout<<"\nINMULTIRE\n";
    afis(a);
    afis(b);
    afis(c);*/
    return c;
}

vector <vector <long long>> Ridicare(vector <vector <long long>> baza, int e){
    vector <vector <long long>> r(3, vector <long long>(3,0));
    r[0][0]=r[1][1]=r[2][2]=1;

    while(e){
        //cout<<endl<<e<<endl;
        if(e%2==1){
            //cout<<"r"<<endl;
            e--;
            r=Inmultire(r, baza);
        }

        else{
            //cout<<"m"<<endl;
            baza = Inmultire(baza,baza);
            e/=2;
        }
    }
    //cout<<"rez"<<endl;
    //r=Inmultire(baza, r);
    return r;
}

int main(){
    fin>>t;

    while(t--){
        int x, y, z, a, b, c, n;
        fin>>x>>y>>z>>a>>b>>c>>n;

        vector <vector <long long>> r(3, vector <long long>(3,0));
        r[0][0]=z;
        r[0][1]=y;
        r[0][2]=x;
        //afis(r);

        vector <vector <long long>> m(3, vector <long long>(3,0));
        m[0][0]=a;
        m[1][0]=b;
        m[2][0]=c;
        m[0][1]=m[1][2]=1;
        //afis(m);

        m=Ridicare(m, n-2);
        r=Inmultire(r, m);
        fout<<r[0][0]<<endl;
    }
    return 0;
}