Cod sursa(job #3178073)

Utilizator eugenioMarinescu Eugenio eugenio Data 30 noiembrie 2023 22:16:58
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;
ifstream cin("iepuri.in");
ofstream cout("iepuri.out");
int n, a, b, c, x, y, z, t;

struct matrice
{
    long long v[3][3];

    matrice()
    {
        for(int i=0; i<3; i++)
            for(int j=0; j<3; j++)
                v[i][j]=0;
    }
};

matrice multiply(matrice a, matrice b)
{
    matrice c;
    for(int i=0; i<3; i++)
        for(int j=0; j<3; j++)
            for(int k=0; k<3; k++)
                c.v[i][j]= c.v[i][j] + a.v[i][k]*b.v[k][j];
    return c;
}

matrice power(matrice m, long long p)
{
    matrice rez;
    for(int i=0; i<3; i++)
        rez.v[i][i]=1;
    for(; p!=0; p/=2)
    {
        if(p%2==1)
        {
            rez=multiply(rez,m);
        }
        m=multiply(m,m);
    }
    return rez;
}

int main()
{
    cin>>t;
    while(t--)
    {
        cin>>x>>y>>z>>a>>b>>c>>n;
        matrice mat;
        mat.v[2][0]=c;
        mat.v[2][1]=b;
        mat.v[2][2]=a;
        mat.v[0][1]=1;
        mat.v[1][2]=1;
        mat=power(mat,n-2);
        int result = x*mat.v[2][0] + y*mat.v[2][1] + z*mat.v[2][2];
        cout<<result<<endl;
    }
    return 0;
}