Cod sursa(job #2445537)

Utilizator toadehuPuscasu Razvan Stefan toadehu Data 4 august 2019 15:37:12
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <bits/stdc++.h>

#define mod 666013

using namespace std;

void mult(int a[5][5], int b[5][5])
{

    int c[5][5] = {0};

    for (int i = 0; i < 3; ++i)
    {
        for (int j = 0; j < 3; ++j)
            for (int k = 0; k < 3; ++k)
                c[i][j] = (1ll * c[i][j] + 1ll * a[i][k] * b[k][j]) % mod;
    }

    for (int i = 0; i < 5; ++i)
        for (int j = 0; j < 5; ++j)
            a[i][j] = c[i][j];

}

int main()
{
ifstream fin ("iepuri.in");
ofstream fout("iepuri.out");
    int q;
    fin>>q;
    while (q--)
    {
        int_fast64_t temp[5][5];
        int_fast64_t x,y,z,a,b,c,zile;
        fin>>x>>y>>z;
        fin>>a>>b>>c;
        fin>>zile;
        int_fast64_t mat[5][5]={{a,1,0},{b,0,1},{c,0,0}};
        for (int i=0;i<3;++i)
        {
            for (int j=0;j<3;++j)
            {
                temp[i][j]=mat[i][j];
            }
        }
        zile-=3;
        while (zile)
        {
            if (zile%2==1)
                {mult(temp, mat);
            }mult(mat, mat);
            zile/=2;
        }
        fout<<(z*temp[0][0]+y*temp[1][0]+x*temp[2][0])%mod<<"\n";
    }
    return 0;

}