Cod sursa(job #3326659)

Utilizator rapidu36Victor Manz rapidu36 Data 29 noiembrie 2025 19:13:38
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <fstream>

using namespace std;

const int N = 3;
const int MOD = 666013;

void produs(int a[N][N], int b[N][N])
{
    int aux[N][N] = {{0, 0}, {0, 0}};
    for (int i = 0; i < N; i++)
    {
        for (int k = 0; k < N; k++)
        {
            for (int j = 0; j < N; j++)
            {
                aux[i][k] = (aux[i][k] + (long long)a[i][j] * b[j][k] % MOD) % MOD;
            }
        }
    }
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            a[i][j] = aux[i][j];
        }
    }
}

int main()
{
    ifstream in("iepuri.in");
    ofstream out("iepuri.out");
    int t;
    in >> t;
    for (int i = 0; i < t; i++)
    {
        int x, y, z, a, b, c, n;
        in >> x >> y >> z >> a >> b >> c >> n;
        n -= 2;
        int p[N][N] = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}};
        int q[N][N] = {{a, 1, 0}, {b, 0, 1}, {c, 0, 0}};
        while (n != 0)
        {
            int cif = n % 2;
            if (cif != 0)
            {
                produs(p, q);
            }
            produs(q, q);
            n /= 2;
        }
        int rez = ((long long)z * p[0][0] % MOD + (long long)y * p[1][0] % MOD +
                   (long long)p[2][0] * x % MOD) % MOD;
        out << rez << "\n";
    }
    in.close();
    out.close();
    return 0;
}