Cod sursa(job #2445539)

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

#define mod 666013

using namespace std;

void mult(int_fast64_t a[5][5], int_fast64_t b[5][5])
{
    int_fast64_t 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;

}