Cod sursa(job #2903922)

Utilizator alexxxxxxhalex alx alexxxxxxh Data 17 mai 2022 21:29:13
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.63 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
long long n,a,b,c,x,y,z;
long long ans[3][3];
long long baza[3][3];
int mod=666013;
void af(long long x[3][3])
{
    for (int i=0;i<3;i++)
    {
        for (int j=0;j<3;j++)
        {
            cout << x[i][j] <<" ";
        }
        cout <<"\n";
    }
    cout <<"\n";
}
void matrici(long long a[3][3],long long b[3][3])
{
    long long aux[3][3];
    for (int i=0;i<3;i++)
    {
        for (int j=0;j<3;j++)
        {aux[i][j]=0;
            for (int k=0;k<3;k++)
            {

                aux[i][j]+=(a[i][k]*b[k][j])%mod;

            }
        }

    }
    for (int i=0;i<3;i++)
    {
        for (int j=0;j<3;j++)
        {
            a[i][j]=aux[i][j];
        }
    }
}
void p(long long y)
{
    while (y)
    {
        if (y%2==0)
        {
            matrici(baza,baza);
            y/=2;
        }
        else
        {
            y--;
            matrici(ans,baza);
        }


    }
}
int main()
{
    long long t;
    fin >>t;
    for (long long i=1;i<=t;i++)
    {
        fin >>x>>y>>z>>a>>b>>c>>n;
        baza[0][0]=0;
        baza[0][1]=1;
        baza[0][2]=0;

        baza[1][0]=0;
        baza[1][1]=0;
        baza[1][2]=1;

        baza[2][0]=c;
        baza[2][1]=b;
        baza[2][2]=a;
        for (int k=0;k<3;k++) for (int l=0;l<3;l++) {ans[k][l]=baza[k][l];}
        p(n-3);
        fout <<((ans[2][0]*x+y*ans[2][1])%mod+ans[2][2]*z)%mod<<"\n";
        for (int k=0;k<3;k++) for (int l=0;l<3;l++) {baza[k][l]=0;ans[k][l]=0;}
    }
}