Cod sursa(job #2839912)

Utilizator Savu_Stefan_CatalinSavu Stefan Catalin Savu_Stefan_Catalin Data 26 ianuarie 2022 18:43:50
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <fstream>

using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
long long  a[11][11],c[11][11],n,ras[11][11],t,X,Y,Z,A,B,C;
void afis()
{
    for (long long  i=1;i<=2;++i)
        for (long long  j=1;j<=2;++j)
        out<<a[i][j]<<" ";
    out<<'\n';
}
void mul(long long  a[11][11],long long  b[11][11])
{
    for (long long  i=1;i<=3;++i)
        for (long long  j=1;j<=3;++j)
        c[i][j]=0;
    for (long long  i=1;i<=3;++i)
        for (long long  j=1;j<=3;++j)
            for (long long  k=1;k<=3;++k)
            {
                c[i][j]+=a[i][k]*b[k][j];
            }
    for (long long  i=1;i<=3;++i)
        for (long long  j=1;j<=3;++j)
        a[i][j]=c[i][j]%666013;
}
void po(long long  n)
{
    while (n)
    {
     if (n%2==0) {n/=2; mul(a,a);}
     else {n--; mul(ras,a);}
    }
}
int  main()
{
    in>>t;
    while (t--){
            for (int i=1;i<=3;++i)
            for (int j=1;j<=3;++j)
            a[i][j]=ras[i][j]=0;
    in>>X>>Y>>Z>>C>>B>>A>>n;
    a[1][2]=a[2][3]=1;
    a[3][1]=A;
    a[3][2]=B;
    a[3][3]=C;
    ras[1][1]=ras[2][2]=ras[3][3]=1;
    po(n);
    out<<X*ras[1][1]+Y*ras[1][2]+Z*ras[1][3]<<'\n';}
    return 0;
}