Cod sursa(job #3158138)

Utilizator xxUnrealUxxNiculae Adrian-Ioan xxUnrealUxx Data 17 octombrie 2023 20:36:03
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda HLO 2023 - Cls 11-12 - Tema 0 Marime 1.66 kb
#include <fstream>
#include <vector>
using namespace std;

ifstream cin("iepuri.in");
ofstream cout("iepuri.out");

const int mod = 666013;
long long A, B, C, X, Y, Z, N;

vector<vector<int>> inmult(vector<vector<int>> m, vector<vector<int>> n)
{
    vector<vector<int>> aux = {{0,0,0},{0,0,0},{0,0,0}};

    aux[0][0] = (m[0][0] * n[0][0] + m[0][1] * n[1][0] + m[0][2] * n[2][0]) % mod;
    aux[0][1] = (m[0][0] * n[0][1] + m[0][1] * n[1][1] + m[0][2] * n[2][1]) % mod;
    aux[0][2] = (m[0][0] * n[0][2] + m[0][1] * n[1][2] + m[0][2] * n[2][2]) % mod;

    aux[1][0] = (m[1][0] * n[0][0] + m[1][1] * n[1][0] + m[1][2] * n[2][0]) % mod;
    aux[1][1] = (m[1][0] * n[0][1] + m[1][1] * n[1][1] + m[1][2] * n[2][1]) % mod;
    aux[1][2] = (m[1][0] * n[0][2] + m[1][1] * n[1][2] + m[1][2] * n[2][2]) % mod;

    aux[2][0] = (m[2][0] * n[0][0] + m[2][1] * n[1][0] + m[2][2] * n[2][0]) % mod;
    aux[2][1] = (m[2][0] * n[0][1] + m[2][1] * n[1][1] + m[2][2] * n[2][1]) % mod;
    aux[2][2] = (m[2][0] * n[0][2] + m[2][1] * n[1][2] + m[2][2] * n[2][2]) % mod;

    return aux;
}

vector<vector<int>> Putere(vector<vector<int>> m , int n)
{
    if(n == 1)
        return m;

    if(n % 2 == 1 && n != 1)
        return inmult(m, Putere(m, n-1));

    vector<vector<int>> P = Putere(m , n / 2);
    return inmult(P, P);
}

int main()
{
    int t;
    cin >> t;

    for(int i = 0; i<t; i++)
    {
        cin >> X >> Y >> Z >> A >> B >> C >> N;
        vector<vector<int>> mat = {{0, 1, 0}, {0, 0, 1}, {C, B, A}};

        mat = Putere(mat, N);

        int a = mat[0][0] * X + mat[0][1] * Y + mat[0][2] * Z;

        cout << a << '\n';
    }
}