Cod sursa(job #2782160)

Utilizator StasBrega Stanislav Stas Data 11 octombrie 2021 19:02:10
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <bits/stdc++.h>

#define ll long long
#define pii pair<int, int>
#define vi vector<int>
#define vvi vector<vector<int>>
#define f first
#define s second
#define pb push_back
#define lsh(i) (1 << (i))
#define fi(i, n) for(int i = 0; (i) < (n); ++(i))
#define fe(x, a) for(auto &(x): (a))

using namespace std;

const int mod = 666013;
int N = 3;

void multiply(vvi &Z, vvi B) {
    vvi A(Z);
    Z = vvi(N, vi(N, 0));
    fi(i, N)
        fi(j, N)
            fi(k, N)
                Z[i][j] = (Z[i][j] + 1ll * A[i][k] * B[k][j]) % mod;
}

void f(vvi &Z, int n) {

    vvi aux(Z);
    while(n) {
        if(n % 2)
            multiply(Z, aux);
        multiply(aux, aux);
        n /= 2;
    }

}

int main()
{

    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

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


    int t;
    cin >>t;
    while(t--) {
        int x,y,z,a,b,c,n;
        cin >> x >> y >> z >> a >> b >> c >> n;
        vvi Z = {{a,b,c},{1,0,0},{0,1,0}};
        vvi M = {{z,0,0},{y,0,0},{x,0,0}};
        f(Z, n - 3);
        multiply(Z, M);
        cout << Z[0][0] << '\n';
    }

    return 0;

}