Cod sursa(job #3368748)

Utilizator contandrei3Andrei Mihai contandrei3 Data 15 octombrie 2026 16:56:58
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <bits/stdc++.h>
using namespace std;

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

const int MOD = 666013;

struct Mat {
    long long v[3][3] = {};
};

Mat inmultire(Mat a, Mat b) {
    Mat r;

    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
            for (int k = 0; k < 3; k++)
                r.v[i][j] = (r.v[i][j] +
                    a.v[i][k] * b.v[k][j]) % MOD;

    return r;
}

Mat putere(Mat a, long long p) {
    Mat r;

    for (int i = 0; i < 3; i++)
        r.v[i][i] = 1;

    while (p > 0) {
        if (p % 2 == 1)
            r = inmultire(r, a);

        a = inmultire(a, a);
        p /= 2;
    }

    return r;
}

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

    while (t--) {
        long long x, y, z, A, B, C, N;
        fin >> x >> y >> z >> A >> B >> C >> N;

        Mat M;
        M.v[0][0] = A;
        M.v[0][1] = B;
        M.v[0][2] = C;
        M.v[1][0] = 1;
        M.v[2][1] = 1;

        Mat P = putere(M, N - 2);

        long long ans = (
            P.v[0][0] * z +
            P.v[0][1] * y +
            P.v[0][2] * x
        ) % MOD;

        fout << ans << '\n';
    }

    return 0;
}