Cod sursa(job #1516936)

Utilizator rangerChihai Mihai ranger Data 3 noiembrie 2015 18:49:59
Problema Iepuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb

# include <bits/stdc++.h>

using namespace std;

struct matrice {
         int n,m;
         int a[5][5];
} init, M;

int tests;
int n;
int A, B, C, X , Y , Z;
const int MOD = 666013;


ifstream fi("iepuri.in");
ofstream fo("iepuri.out");

matrice mult(matrice A, matrice B) {

    matrice C;
    C.n = A.n; C.m = B.m;

    for (int i=1;i<=C.n;++i)
    for (int j=1;j<=C.m;j++) {
        C.a[i][j] = 0;
        for (int k=1;k<=A.m;k++)
        {
            C.a[i][j] += A.a[i][k] * B.a[k][j];
            C.a[i][i] %= MOD;
        }
    }
    return C;
}

matrice pow(matrice M, int n)
{
    if (n==1) return M;
    if (n & 1) return mult(pow(M, n-1), M);
    matrice Aux = pow(M, n/2);
    return mult(Aux, Aux);
}

int main()
{
    fi >> tests;
    while (tests--) {

        fi >> X >> Y >> Z >> A >> B >> C >> n;
        init.n = 1; init.m = 3;
        init.a[1][1] = X; init.a[1][2] = Y; init.a[1][3] = Z;
        M.n = M.m = 3;
        M.a[2][1] = M.a[3][2] = 1;
        M.a[1][3] = C; M.a[2][3] = B; M.a[3][3] = A;
        matrice CS = pow(M,n);
        CS = mult(init, CS);
        fo << CS.a[1][1] << "\n";
    }
    return  0;
}