Cod sursa(job #2351080)

Utilizator Anastasia11Susciuc Anastasia Anastasia11 Data 21 februarie 2019 22:40:30
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>
#define ll long long
#define MOD 666013

using namespace std;

ifstream f("iepuri.in");
ofstream g("iepuri.out");

ll m[4][4], i3[4][4], d[4][4];
ll t, x, y, z, a, b, c;
ll n;

void mult(ll a[4][4], ll b[4][4])
{
    ll c[4][4];
    for (ll i = 1; i <= 3; i++)
        for (ll j = 1; j <= 3; j++) c[i][j]=0;

    for (ll i = 1; i <= 3; i++)
        for (ll j = 1; j <= 3; j++)
            for (ll k = 1; k <= 3; k++)
                 c[i][j] = (c[i][j] + a[i][k] * b[k][j]) % MOD;

    for (ll i = 1; i <= 3; i++)
        for (ll j = 1; j <= 3; j++) a[i][j]=c[i][j];
}

int main()
{
    f >> t;
    while(t--)
    {
        f >> x >> y >> z;
        f >> a >> b >> c;
        f >> n;
        m[1][1]=0;m[1][2]=0;m[1][3]=c;
        m[2][1]=1;m[2][2]=0;m[2][3]=b;
        m[3][1]=0;m[3][2]=1;m[3][3]=a;

        i3[1][1]=x;i3[1][2]=y;i3[1][3]=z;
        n-=2;
        while(n)
        {
            if(n&1) mult(i3, m);
            mult(m, m);
            n>>=1;
        }
        g << i3[1][3] << '\n';
    }
    return 0;
}