Cod sursa(job #2765065)

Utilizator marcumihaiMarcu Mihai marcumihai Data 24 iulie 2021 18:56:58
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <bits/stdc++.h>
#define mod 666013
using namespace std;

ifstream f("iepuri.in");
ofstream g("iepuri.out");

int test;
int X,Y,Z,A,B,C,n;
int a[5][5],b[5][5],c[5][5];
int nul[5][5];

void copiere(int a[5][5],int b[5][5])
{
    for(int i = 1; i <= 3; i++)
        for(int j = 1; j <= 3; j++)
            a[i][j] = b[i][j];
}

void inmultire(int a[5][5], int b[5][5])
{
    int ajut[5][5];

    long long s;
    for(int i = 1; i <= 3; i++)
        for(int j = 1; j <= 3; j++)
        {
            s = 0;
            for(int k = 1; k <= 3; k++)
                s += a[i][k] * b[k][j];
            ajut[i][j] = s%mod;
        }
    copiere(a,ajut);
}

void putere(int a[5][5], int p)
{



    while(p)
    {
        if(p & 1)
        {
            p--;
            inmultire(c,a);
        }
        p/=2;
        inmultire(a,a);
    }
    copiere(a,c);
}



int main()
{
    f >> test;
    for(int t=1; t<=test;++t)
    {
        f >> X >> Y >> Z >> A >> B >> C >> n;
        copiere(a,nul);
        copiere(b,nul);
         copiere(c,nul);
        c[1][1] = c[2][2] = c[3][3] = 1;
        b[2][1] = b[3][2] = 1;
        b[1][3] = C, b[2][3] = B, b[3][3] = A;
        a[1][1] = X, a[1][2] = Y, a[1][3] = Z;
        putere(b,n-2);
        inmultire(a,b);

        g << a[1][3] << "\n";

    }

    return 0;
}