Cod sursa(job #2392672)

Utilizator alexilasiAlex Ilasi alexilasi Data 30 martie 2019 11:44:16
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <bits/stdc++.h>

#define ll long long

using namespace std;

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

const ll MOD = 666013;

ll t, x, y, z, A, B, C, n, i, j;
ll a[3][3], c[3][3], sol[3][3];

void inm(ll a[3][3],ll b[3][3])
{
    ll c[3][3];
    int i,j,k;
    for(i=0; i<=2; i++)
    {
        for(j=0; j<=2; j++)
        {
            c[i][j]=0;
            for(k=0; k<=2; k++)
                c[i][j]+=a[i][k]*b[k][j];
            c[i][j]=c[i][j]%MOD;
        }
    }
    for(i=0; i<=2; i++)
        for(j=0; j<=2; j++)
            a[i][j]=c[i][j];

}

void put(ll a[3][3], int k)
{
    while(k)
    {
        if(k%2)
            inm(a, c);
        k/=2;
        inm(c, c);
    }
}

int main()
{
    fin >> t;
    while(t--)
    {
        fin >> x >> y >> z >> A >> B >> C >> n;
        for(i=0; i<3; i++)
            for(j=0; j<3; j++)
                sol[i][j] = a[i][j] = c[i][j] = 0;
        sol[0][0] = sol[1][1] = sol[2][2] = 1;
        a[0][0] = x; a[0][1] = y; a[0][2] = z;
        c[1][0] = 1; c[2][1] = 1; c[2][2] = A; c[1][2] = B; c[0][2] = C;

        put(sol, n);
        inm(a, sol);

        fout << a[0][0] << '\n';
    }
    return 0;
}