Cod sursa(job #3337778)

Utilizator victorioan10Victor victorioan10 Data 29 ianuarie 2026 22:02:51
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>

using namespace std;

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

int m[4][4],q[4][4],I[4][4];
#define MOD 666013

void inmultire(int m1[4][4], int m2[4][4])
{
    int i,j,k;
    for(i=1;i<=3;i++)
        for(j=1;j<=3;j++)
        {
            q[i][j]=0;
            for(k=1;k<=3;k++)
                q[i][j]=(q[i][j]+1LL*m1[i][k]*m2[k][j]%MOD)%MOD;
        }
    for(i=1;i<=3;i++)
        for(j=1;j<=3;j++)
            m1[i][j]=q[i][j];
}

int main()
{
    int x,y,z,a,b,c;
    int t,n,k;
    cin>>t;
    for(k=1;k<=t;k++)
    {
        cin>>x>>y>>z>>a>>b>>c>>n;
        m[1][1]=0; m[1][2]=1; m[1][3]=0;
        m[2][1]=0; m[2][2]=0; m[2][3]=1;
        m[3][1]=c; m[3][2]=b; m[3][3]=a;
        I[1][1]=1; I[1][2]=0; I[1][3]=0;
        I[2][1]=0; I[2][2]=1; I[2][3]=0;
        I[3][1]=0; I[3][2]=0; I[3][3]=1;
        n-=2;
        while(n>0)
        {
            if(n%2==1)
                inmultire(I,m);
            inmultire(m,m);
            n/=2;
        }
        cout<<(1LL*I[3][1]*x%MOD+1LL*I[3][2]*y%MOD+1ll*I[3][3]*z%MOD)%MOD<<'\n';
    }
    return 0;
}