Cod sursa(job #2593678)

Utilizator AndreeaGherghescuAndreea Gherghescu AndreeaGherghescu Data 4 aprilie 2020 13:34:34
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <iostream>
#include <fstream>
#define mod 666013

using namespace std;

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

long long m[4][4],p[4][4];

void produs (long long d[4][4],long long a[4][4],long long b[4][4])
{
    int aux[4][4];
    for (int i=1;i<=3;i++)
        for (int j=1;j<=3;j++)
        {
            aux[i][j]=0;
            for (int k=1;k<=3;k++)
                aux[i][j]+=1LL*a[i][k]*b[k][j]%mod;
            aux[i][j]%=mod;
        }
    for (int i=1;i<=3;i++)
        for (int j=1;j<=3;j++)
            d[i][j]=aux[i][j]%mod;
}
void putere (int n)
{
    while (n!=0)
    {
        if (n%2==1)
        {
            produs (p,p,m);
        }
        produs (m,m,m);
        n/=2;
    }
}
int main()
{
    int a,b,c,x,y,z,n,t;
    in>>t;
    while (t--)
    {
        in>>x>>y>>z>>a>>b>>c>>n;
        for (int i=1;i<=3;i++)
            for (int j=1;j<=3;j++)
                m[i][j]=p[i][j]=0;

        p[1][1]=p[2][2]=p[3][3]=1;

        m[1][3] = c;
        m[2][1] = 1;
        m[2][3] = b;
        m[3][2] = 1;
        m[3][3] = a;

        putere (n-2);
        out<<(p[1][3]*x%mod+p[2][3]*y%mod+p[3][3]*z%mod)%mod<<'\n';

    }
    return 0;
}