Cod sursa(job #3358475)

Utilizator stefandutastefandutahoria stefanduta Data 16 iunie 2026 22:57:57
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>

using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");

const int MOD = 666013;

vector <vector <long long>> multiply (vector <vector <long long>> a, vector <vector <long long>> b) {
    int n = a.size();
    vector <vector <long long>> c(n, vector <long long> (n, 0));

    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            int sum = 0;
            for (int k = 0; k < n; ++k)
                sum = (sum + (a[i][k] * b[k][j]) % MOD) % MOD;
            c[i][j] = sum;
        }
    }

    return c;
}


vector <vector <long long>> pow (vector <vector <long long>> a, int e) {
    int n = a.size();
    vector <vector <long long>> p(n, vector<long long>(n, 0));
    for (int i = 0; i < n; ++i)
        p[i][i] = 1;

    while (e) {
        if (e % 2 == 1)
            p = multiply(p, a);
        a = multiply(a, a);
        e = e / 2;
    }

    return p;
} 

int main() {
    int t, a, b, c, x, y, z, n;
    in >> t;
    while (t--) {
        in >> x >> y >> z >> a >> b >> c >> n;
        vector <vector <long long>> mat(3, vector<long long>(3, 0));
        mat[0][0] = a;
        mat[0][1] = b;
        mat[0][2] = c;
        mat[1][0] = 1;
        mat[2][1] = 1;

        vector <vector <long long>> rez;
        rez = pow(mat, n - 2);
        int sum = ((rez[0][0] * z) % MOD + (rez[0][1] * y) % MOD + (rez[0][2] * x) % MOD) % MOD;

        out << sum << '\n';

    }
    return 0;
}