Cod sursa(job #3348215)

Utilizator Zander01523Unguru Alexandru-Ionut Zander01523 Data 20 martie 2026 11:10:00
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.53 kb
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int nMax=2e5+5,MOD=666013;

ll t,n,m,k,x,y,z,a,b,c,d,cnt,ans,rez,sum,poz;
ll v[nMax],mat[4][4],mat1[4][4],mat2[4][4],matr[4][4],aux[4][4];
bool ok;
char ch;
string s;
map<int,int>mp;
void inm(ll mat1[4][4],ll mat2[4][4])
{
    for(int i=1; i<=3; ++i)
        for(int j=1; j<=3; ++j)
        {
            aux[i][j]=0;
            for(int q=1; q<=3; ++q)
                aux[i][j]=(aux[i][j]+mat1[i][q]*mat2[q][j])%MOD;
        }
}
void fastPow(ll p,ll mat[4][4])
{
    while(p)
    {
        if(p%2)
        {
            p--;
            inm(mat,matr);
            for(int i=1; i<=3; ++i)
                for(int j=1; j<=3; ++j)
                    matr[i][j]=aux[i][j];
        }
        else
        {
            p/=2;
            inm(mat,mat);
            for(int i=1; i<=3; ++i)
                for(int j=1; j<=3; ++j)
                    mat[i][j]=aux[i][j];
        }
    }
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    fin>>t;
    while(t--)
    {
        for(int i=1; i<=3; ++i)
            for(int j=1; j<=3; ++j)
                mat[i][j]=matr[i][j]=0;
        matr[1][1]=matr[2][2]=matr[3][3]=1;
        fin>>x>>y>>z>>a>>b>>c>>n;
        mat[1][2]=1;
        mat[2][3]=1;
        mat[3][1]=c,mat[3][2]=b,mat[3][3]=a;
        fastPow(n-2,mat);
        fout<<(x*matr[3][1]+y*matr[3][2]+z*matr[3][3])%MOD<<'\n';
    }
}