Cod sursa(job #3351290)

Utilizator Balteanu_Rares123Popescu Ion Balteanu_Rares123 Data 18 aprilie 2026 14:22:22
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.71 kb
#include <fstream>

using namespace std;
ifstream cin("iepuri.in");
ofstream cout("iepuri.out");
long long I[4][4],rez[4][4];
void ridic(long long baza[4][4], int exp)
{
    int aux[4][4],i,j,k,s;
    while(exp!=0)
        if(exp%2==0)
        {
            exp/=2;
            for(i=1;i<=3;i++)
                for(j=1;j<=3;j++)
                {
                    s=0;
                    for(k=1;k<=3;k++)
                        s+=(1LL*baza[i][k]*baza[k][j])%666013;
                    aux[i][j]=s;
                }
            for(i=1;i<=3;i++)
                for(j=1;j<=3;j++)
                    baza[i][j]=aux[i][j];
        }
        else
        {
            exp--;
            for(i=1;i<=3;i++)
                for(j=1;j<=3;j++)
                {
                    s=0;
                    for(k=1;k<=3;k++)
                        s+=(1LL*rez[i][k]*baza[k][j])%666013;
                    aux[i][j]=s;
                }
            for(i=1;i<=3;i++)
                for(j=1;j<=3;j++)
                    rez[i][j]=aux[i][j];
        }
}
int main()
{
    int a,b,c,x,y,z,t,n,i,j,k;
    cin>>t;
    for(i=1;i<=t;i++)
    {
        cin>>x>>y>>z>>a>>b>>c>>n;
        for(j=1;j<=3;j++)
            for(k=1;k<=3;k++)
            {
               if(j==k)
                    rez[j][k]=1;
               else
                    rez[j][k]=0;
            }
        I[1][1]=0;
        I[1][2]=1;
        I[1][3]=0;
        I[2][1]=0;
        I[2][2]=0;
        I[2][3]=1;
        I[3][1]=c;
        I[3][2]=b;
        I[3][3]=a;
        ridic(I,n-2);
        cout<<((rez[3][1]*x)%666013+(rez[3][2]*y)%666013+(rez[3][3]*z)%666013)%666013<<'\n';
    }
    return 0;
}