Cod sursa(job #2951335)

Utilizator Dragu_AndiDragu Andrei Dragu_Andi Data 6 decembrie 2022 00:28:17
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>
#include <iostream>

using namespace std;

ifstream fin("iepuri.in");
ofstream fout("iepuri.out");

const int mod=666013;

int X, Y, Z, A, B, C;

struct matrice{
    long long int val[3][3];
};

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

matrice exp(matrice b, int e)
{
    if(e==1) return b;
    if(e%2==1) return prod(b,exp(b,e-1));
    matrice p=exp(b, e/2);
    return prod(p,p);
}

int fib(int k)
{
    matrice M;
    M.val[0][0]=0;
    M.val[0][1]=1;
    M.val[0][2]=0;
    M.val[1][0]=0;
    M.val[1][1]=0;
    M.val[1][2]=1;
    M.val[2][0]=C;
    M.val[2][1]=B;
    M.val[2][2]=A;
    M=exp(M, k);
    return M.val[0][0]*X+M.val[0][1]*Y+M.val[0][2]*Z;
}

int main()
{
    int n; fin >> n;
    int k;
    for(int i=0; i<n; i++)
    {fin >> X >> Y >> Z >> A >> B >> C >> k;
    fout << fib(k) << '\n';}
    return 0;
}