Cod sursa(job #3344117)

Utilizator tudorhTudor Horobeanu tudorh Data 1 martie 2026 13:35:04
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <bits/stdc++.h>
#define ll long long
#define pb push_back

using namespace std;

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

const int mod=666013;

ll A[3][3],O[3][3],I[3][3],r[3][3];

void copy_mat(ll v[][3],ll source[][3]){
    for(int i=0;i<3;i++)
        for(int j=0;j<3;j++)
            v[i][j]=source[i][j];
}


void multiply(ll v1[][3],ll v2[][3]){
    ll r[3][3];
    copy_mat(r,O);
    for(int i=0;i<3;i++)
        for(int j=0;j<3;j++)
            for(int k=0;k<3;k++)
                r[i][j]=(r[i][j]+v1[i][k]*v2[k][j]%mod)%mod;
    copy_mat(v1,r);
}

void lg_pow(int power){
    ll base[3][3];
    copy_mat(r,I);
    copy_mat(base,A);
    while(power){
        if(power%2)
            multiply(r,base);
        multiply(base,base);
        power/=2;
    }
}
void init_mat(int a,int b,int c){
    I[0][0]=I[1][1]=I[2][2]=1;
    A[0][0]=a,A[0][1]=b,A[0][2]=c;
    A[1][0]=1;
    A[2][1]=1;

}
void solve(){
    ll x,y,z,a,b,c,n;
    fin>>x>>y>>z>>a>>b>>c>>n;
    init_mat(a,b,c);
    lg_pow(n-2);
    fout<<(r[0][0]*z%mod+r[0][1]*y%mod+r[0][2]*x%mod)%mod<<'\n';
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int t;
    fin>>t;
    while(t--)
        solve();
    return 0;
}