Cod sursa(job #3256817)

Utilizator ArthurrrfubinacaARthur Paun Arthurrrfubinaca Data 16 noiembrie 2024 10:23:48
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <iostream>
#include <fstream>
#define ll long long
#define MOD 666013

using namespace std;

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

int K,F[3][3],M[3][3];
int T,X,Y,Z,A,B,C,N;

void Multiply(int x[3][3],int y[3][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]=(rez[i][j]+ (1LL * x[i][k] * y[k][j])%MOD)%MOD;
            }
        }
    }
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<3;j++)
            x[i][j]=rez[i][j];
    }
}

int main()
{
    fin >> T;
    while(T--)
    {
        fin >> X >> Y >> Z >> A >> B >> C >> N;

        F[0][0] = X; F[0][1] = Y; F[0][2] = Z;

        M[0][0] = M[0][1] = M[1][1] = M[2][0] = 0;

        M[1][0] = M[2][1] = 1;

        M[0][2] = C; M[1][2] = B; M[2][2] = A;

        while(N)
        {
            if(N % 2 == 1)
                Multiply(F,M);
            Multiply(M,M);
            N = N /2;
        }

        fout << F[0][0] <<"\n";
    }
    return 0;
}