Cod sursa(job #2495310)

Utilizator adiaioanaAdia R. adiaioana Data 19 noiembrie 2019 09:23:05
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>

using namespace std;
ifstream cin("iepuri.in");
ofstream cout("iepuri.out");
long long x,y,z,a,b,c,m[5][5],v[5][5];
int n,T;
void inm(int exp, int n1, int m1, int n2, int m2);
int main()
{
    cin>>T;
    for(int i=1; i<=T; ++i)
    {
        cin>>x>>y>>z>>a>>b>>c>>n;
        v[0][0]=x;
        v[0][1]=y;
        v[0][2]=x;
        m[1][0]=1;
        m[2][1]=1;
        m[0][2]=x;
        m[1][2]=y;
        m[2][2]=z;
        inm(n,1,3,3,3);
        cout<<v[0][2]<<'\n';
    }
    return 0;
}

void inm(int exp, int n1, int m1, int n2, int m2)
{
    if(exp==0)
        return ;
    if(exp==1)
    {
        for(int i=0; i<n1; ++i)
            for(int j=0; j<m1; ++j)
            {
                long long el=v[i][j];
                for(int k=0; k<n2; ++k)
                    v[i][j]+=el*m[k][i];
            }
        return ;
    }
    if(exp%2==0)
    {
        inm(exp/2,n1,m1,n2,m2);
        inm(exp/2,n1,m1,n2,m2);
    }
    else{
        inm(exp/2,n1,m1,n2,m2);
        inm(exp/2,n1,m1,n2,m2);
        inm(1,n1,m1,n2,m2);
    }
}