Cod sursa(job #3130790)

Utilizator bianca_ungureanuBianca-Maria Ungureanu bianca_ungureanu Data 18 mai 2023 16:56:18
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>

using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
const int MOD=666013;

int X,Y,Z,A,B,C;

void mult(int A[][3],int B[][3]) ///a<-a*b
{
    long long int C[3][3];
    int i,j,k;
    for (i=0;i<3;++i)
        for (j=0;j<3;++j)
    {
        C[i][j]=0;
        for (k=0;k<3;++k)
            C[i][j]+=(long long)A[i][k]*B[k][j];
    }
    for (i=0;i<3;++i)
        for (j=0;j<3;++j)
            A[i][j]=C[i][j]%MOD;
}

int putere(int n)
{
    int M[3][3]=
    {
        {0,0,C},
        {1,0,B},
        {0,1,A},
    };
    int I[3][3]=
    {
        {1,0,0},
        {0,1,0},
        {0,0,1},
    };
    while(n>0)
    {
        if (n&1)
            mult(I,M);
        mult(M,M);
        n>>=1;
    }
    return((long long)X*I[0][2]+(long long)Y*I[1][2]+(long long)Z*I[2][2])%MOD;
}

int main()
{
    int T,N;
    f>>T;
    while(T--)
    {
        f>>X>>Y>>Z;
        f>>A>>B>>C;
        f>>N;
        g<<putere(N-2)<<'\n';
    }
    f.close();
    g.close();
    return 0;
}