Cod sursa(job #3346468)

Utilizator CarenaMironov Cezar Luca Carena Data 13 martie 2026 19:09:57
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
#define int long long

using namespace std;

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

const int MOD=666013;
int n, x, y, z, a, b, c;
struct matrix
{
    int di, dj, mat[3][3];
    friend matrix operator*(const matrix &a, const matrix &b)
    {
        matrix c={a.di, b.dj};
        for(int i=0;i<c.di;i++)
            for(int j=0;j<c.dj;j++)
            {
                c.mat[i][j]=0;
                for(int k=0;k<a.dj;k++)
                    c.mat[i][j]=(c.mat[i][j]+a.mat[i][k]*b.mat[k][j]%MOD)%MOD;
            }
        return c;
    }
}init, mulmat;

void init_mat()
{
    init={1, 3, {{x, y, z}}};
    mulmat={3, 3, {{0, 0, c},
                   {1, 0, b},
                   {0, 1, a}}};
}

matrix lgpow(matrix a, int b)
{
    if(b==1)
        return a;
    matrix p=lgpow(a, b/2);
    if(b%2)
        return p*p*a;
    return p*p;
}

void solve()
{
    in>>x>>y>>z>>a>>b>>c>>n;
    init_mat();
    init=init*lgpow(mulmat, n-2);
    out<<init.mat[0][2]<<'\n';
}

signed main()
{
    int t; in>>t;
    while(t--)
        solve();
    return 0;
}