Cod sursa(job #2368636)

Utilizator TudorCaloianCaloian Tudor-Ioan TudorCaloian Data 5 martie 2019 16:51:12
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <bits/stdc++.h>
#define MOD 666013
#define ll long long
using namespace std;

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

long long int t, x, y, z, a, b, c, n;

void mult(int m1[3][3], int m2[3][3], int m3[3][3])
{

    for(int i = 0; i < 3; i++)
        for(int j = 0; j < 3; j++)
         {
             m3[i][j] = 0;
             for(int t = 0; t < 3; t++)
                m3[i][j] = (m3[i][j]+ 1LL*m1[i][t]*m2[t][j])%MOD;
         }

}


void logt(int k, int q[3][3], int m[3][3])
{
    int aux[3][3];


    for(int i = 0; (1LL<<i) <= k; i++)
    {
        if(k&(1<<i))
        {
            mult(q, m, aux);
            memcpy(m, aux, sizeof(aux));
        }


        mult(q, q, aux);
        memcpy(q, aux, sizeof(aux));


    }


}

int main()
{
    fin >> t;

    while(t--)
    {
        fin >> x >> y >> z >> a >> b >> c >> n;
        int q[3][3], sol[3][3];
        memset(q, 0, sizeof(q));
        memset(sol, 0, sizeof(sol));
        q[0][2] = c;
        q[1][0] = 1;
        q[1][2] = b;
        q[2][1] = 1;
        q[2][2] = a;
        sol[0][0] = sol[1][1] = sol[2][2] = 1;
        logt(n-2, q, sol);
        fout << (1LL*sol[0][2]*x + 1LL*sol[1][2]*y+ 1LL*sol[2][2]*z)%MOD << '\n';
    }


    return 0;
}