Cod sursa(job #3320339)

Utilizator Alez11jokler Alez11 Data 5 noiembrie 2025 09:05:28
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.43 kb
#include <fstream>
#include<string>
#include<vector>
#include<map>
#include<cmath>
using namespace std;
const string task="f";
ifstream cin(task+".in");
ofstream cout(task+".out");
int T;
vector<vector<int>> multmatric(vector<vector<int>> mat1, vector<vector<int>> mat2) {
    int R1 = mat1.size();
    int C1 = mat1[0].size();
    int R2 = mat2.size();
    int C2 = mat2[0].size();

    vector<vector<int>> matrez(R1, vector<int>(C2, 0));

    for (int R = 0; R < R1; R++) {
        for (int C = 0; C < C2; C++) {
            for (int i = 0; i < C1; i++) {
                matrez[R][C] += mat1[R][i] * mat2[i][C];
            }
        }
    }
    return matrez;
}
void solve()
{
    int a,b,c,z0,z1,z2,n;
    cin>>z0>>z1>>z2>>a>>b>>c>>n;
    map<int,vector<vector<int>>> matrice;
    vector<vector<int>> mattemp;
mattemp={{0,1,0},{0,0,1},{a,b,c}};
matrice[0]=mattemp;
    n=n-2;
    int lg=(int)log2(n);
    for(int i=1;i<=lg;i++)
    {
        matrice[i]=multmatric(matrice[i-1],matrice[i-1]);

    }
    vector<vector<int>> matfinal=matrice[lg];
    for(int i=0;i<lg;i++)
    {
        if((1<<i)&n)
        {
            matfinal=multmatric(matfinal,matrice[i]);
        }
    }
    vector<vector<int>> matmic;
  matmic={{z0},{z1},{z2}};
    matmic=multmatric(matfinal,matmic);
    cout<<matmic[2][0]<<'\n';
}
int main()
{
    cin>>T;
    while(T--)
    {
        solve();
    }

    return 0;
}