Cod sursa(job #3348985)

Utilizator tudorhTudor Horobeanu tudorh Data 24 martie 2026 22:02:47
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <bits/stdc++.h>
#define pii pair<int,int>
#define pb push_back
#define ll long long


using namespace std;

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

typedef ll matrix[3][3];

const int mod = 666013;

matrix T, R;

void mult (matrix a, matrix b) {
    matrix r;
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++) {
            r[i][j] = 0;
            for (int k = 0; k < 3; k++)
                r[i][j] += a[i][k] * b[k][j];
            r[i][j] %= mod;
        }
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
            a[i][j] = r[i][j];
}


void power (int power) {
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
            R[i][j] = (i == j);
    while (power) {
        if (power % 2)
            mult (R, T);
        mult (T, T);
        power /= 2;
    }
}



void solve() {
    ll x, y, z, a, b, c, n;
    fin >> x >> y >> z >> a >> b >> c >> n;

    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
            T[i][j] = 0;

    T[0][0] = a, T[0][1] = b, T[0][2] = c;
    T[1][0] = T[2][1] = 1;
    power (n-2);
    fout << (R[0][0]*z + R[0][1]*y + R[0][2]*x) % mod << '\n';

}

int main() {
    int t;
    fin >> t;
    while (t--)
        solve();
    return 0;
}