Cod sursa(job #3319621)

Utilizator pachy2007Pachitanu Matei pachy2007 Data 2 noiembrie 2025 11:06:31
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <fstream>

using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int MOD=666013;
int t,a,b,c,i0,i1,i2,n;
int v[5][5];

void inmultire(int a[5][5], int b[5][5] )
{
    int c[5][5]= {0};

    for(int i=1; i<=3; i++)
        for(int j=1; j<=3; j++)
            for(int k=1; k<=3; k++)
            {
                c[i][j]=(c[i][j]+(a[i][k] * b[k][j])%MOD)%MOD;
            }
    for(int i=1; i<=3; i++)
        for(int j=1; j<=3; j++)
            a[i][j]=c[i][j];

}

void ridicare_putere(int n)
{
    int p[5][5]= {0};
    p[1][1]=1;
    p[2][2]=1;
    p[3][3]=1;

    while(n)
    {
        if(n % 2 == 1)
        {
            inmultire(p, v);
        }
        inmultire(v,v);
        n /= 2;
    }

    for(int i=1; i<=3; i++)
        for(int j=1; j<=3; j++)
            v[i][j]=p[i][j];
}
int main()
{
    fin>>t;
    for(int i=0; i<t; i++)
    {
        fin>>i0>>i1>>i2>>a>>b>>c>>n;

        v[1][1]=0;
        v[1][2]=1;
        v[1][3]=0;

        v[2][1]=0;
        v[2][2]=0;
        v[2][3]=1;

        v[3][1]=c;
        v[3][2]=b;
        v[3][3]=a;

        ridicare_putere(n);

        fout<<((v[1][1]*i0%MOD+v[1][2]*i1%MOD)%MOD+v[1][3]*i2%MOD)%MOD<<'\n';
    }
    return 0;
}