Cod sursa(job #3296532)

Utilizator MirceaCUCUSirghe Mircea Anton MirceaCUCU Data 13 mai 2025 11:29:16
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <bits/stdc++.h>

using namespace std;

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

#define MOD 666013
int m1[3][3];
int x,y,z,a,b,c;

void produs(int a[][3], int b[][3])
{
    int rez[3][3]={0};
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<3;j++)
        {
            for(int k=0;k<3;k++)
            {
                rez[i][j]=(1ll*rez[i][j]+(1ll*a[i][k]*b[k][j])%MOD)%MOD;
            }
        }
    }
    for(int i=0;i<3;i++)
        for(int j=0;j<3;j++)
            a[i][j]=rez[i][j];
}

int putere(int baza[0][3], int putere)
{
    int rez[3][3]={0};
    rez[0][0]=1;
    rez[1][1]=1;
    rez[2][2]=1;
    while(putere)
    {
        if(putere%2)
        {
            produs(rez,baza);
        }
        produs(baza,baza);
        putere/=2;
    }
    return ((1ll*rez[0][0]*z)%MOD+(1ll*rez[0][1]*y)%MOD+(1ll*rez[0][2]*x)%MOD)%MOD;
}

int main()
{
    int t;
    in>>t;
    for(int p=1;p<=t;p++)
    {
        int a,b,c,n;
        in>>x>>y>>z>>a>>b>>c>>n;
        for(int i=1;i<3;i++)
            for(int j=0;j<3;j++)
                m1[i][j]=0;
        m1[1][0]=m1[2][1]=1;
        m1[0][0]=a,m1[0][1]=b,m1[0][2]=c;
        out<<putere(m1,n-2)<<" ";
    }
    return 0;
}