Cod sursa(job #3351683)

Utilizator dubitDarius Dubit dubit Data 20 aprilie 2026 20:46:04
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
/*
* author [dubit]
*/
#include <bits/stdc++.h>

using namespace std;

#define mod 666013
#define int long long

struct matr {
    int mat[3][3];

    matr() {
        for (int i=0;i<3;i++)
            for (int j=0;j<3;j++)
                mat[i][j]=0;
    }
};

matr multiply(matr a,matr b) {
    matr c;
    for (int i=0;i<3;i++)
        for (int j=0;j<3;j++)
            for (int k=0;k<3;k++) {
                c.mat[i][j]+=a.mat[i][k]*b.mat[k][j];
                c.mat[i][j]%=mod;
            }
    return c;
}

matr power(matr base,int p) {
    matr r;
    r.mat[0][0]=r.mat[1][1]=r.mat[2][2]=1;

    while (p>0) {
        if (p%2)
            r=multiply(r,base);
        base=multiply(base,base);
        p/=2;
    }
    return r;
}

signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    freopen("iepuri.in","r",stdin);
    freopen("iepuri.out","w",stdout);

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

        matr m;
        m.mat[0][0]=a;
        m.mat[0][1]=b;
        m.mat[0][2]=c;
        m.mat[1][0]=m.mat[2][1]=1;
        m.mat[1][1]=m.mat[1][2]=m.mat[2][0]=m.mat[2][2]=0;

        matr mm=power(m,n-2);

        cout<<(mm.mat[0][0]*z+mm.mat[0][1]*y+mm.mat[0][2]*x)%mod<<'\n';
    }
    return 0;
}