Cod sursa(job #2742771)

Utilizator ImBroOmYMihai Niculai ImBroOmY Data 21 aprilie 2021 18:50:50
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
using namespace std;
 
ifstream f("iepuri.in");
ofstream g("iepuri.out");
 
void inmultire (long long a[3][3], long long b[3][3]) {
    long long c[3][3];
    for (int i=0; i<3; i++) {
        for (int j=0; j<3; j++) {
            c[i][j]=0;
            for (int k=0; k<3; k++)
                c[i][j]+=a[i][k]*b[k][j];
        }
    }
    for (int i=0; i<3; i++)
        for (int j=0; j<3; j++)
            a[i][j]=c[i][j];
}

void ExpR1(long long  x[][3], int n)
{
    long long rez[][3]={{1,0,0},{0,1,0},{0,0,1}};
    for(int p=1;p<=n;p<<=1)
    {
        if(n&p)
            inmultire(rez, x);
        inmultire(x, x);


    }
   for(int i=0;i<3;i++)
        for(int j=0;j<3;j++)
            x[i][j]=rez[i][j];
}
    
int main() {
    int T, X, Y, Z, A, B, C, N;
    f >> T;
    for (int i=1; i<=T; i++) {
        f >> X >> Y >> Z >> A >> B >> C >> N;
        long long m[][3]={{0,0,C},{1,0,B},{0,1,A}};
        ExpR1(m, N-2);
        g << X*m[0][2]+Y*m[1][2]+Z*m[2][2] << endl;
    }
    return 0;
}