Cod sursa(job #3313290)

Utilizator bogdan1479Luca Bogdan Alexandru bogdan1479 Data 3 octombrie 2025 10:52:28
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <fstream>

using namespace std;

const int MOD = 666013;

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

int t, X, Y, Z, A, B, C, N, mat[4][4], val[4][4], temp[4][4];
long long sol;

void init()
{
    for(int i = 1; i < 4; ++i)
        for(int j = 1; j < 4; ++j)
            val[i][j] = (i == j);
    mat[1][1] = 0, mat[1][2] = 1, mat[1][3] = 0;
    mat[2][1] = 0, mat[2][2] = 0, mat[2][3] = 1;
    mat[3][1] = C, mat[3][2] = B, mat[3][3] = A;
}

void mul(int a[4][4], int b[4][4])
{
    for(int i = 1; i < 4; ++i)
        for(int k = 1; k < 4; ++k)
        {
            temp[i][k] = 0;
            for(int j = 1; j < 4; ++j)
                temp[i][k] = (temp[i][k] + 1LL * a[i][j] * b[j][k]) % MOD;
        }
    for(int i = 1; i < 4; ++i)
        for(int j = 1; j < 4; ++j)
            a[i][j] = temp[i][j];
}

void exp(int b)
{
    while(b)
    {
        if(b & 1) mul(val, mat);
        mul(mat, mat);
        b >>= 1;
    }
}

int main()
{
    fin >> t;
    while(t--)
    {
        fin >> X >> Y >> Z >> A >> B >> C >> N;
        init();
        exp(N);
        sol = 1LL * X * val[1][1] + 1LL * Y * val[1][2] + 1LL * Z * val[1][3];
        fout << sol % MOD << "\n";
    }
    return 0;
}