Cod sursa(job #2232843)

Utilizator ptudortudor P ptudor Data 21 august 2018 13:27:07
Problema Iepuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.69 kb
#include <iostream>
#include <fstream>
using namespace std;
int T,N,A,B,C,X,Y,Z;
const int Pr=666013;
unsigned long long Ar[4][4];
void Fa_Ar(int n);
void Prod(unsigned long long a[4][4],unsigned long long b[4][4],unsigned long long c[4][4]);
void Copie(unsigned long long a[4][4],unsigned long long b[4][4]);
int main()
{
    ifstream in("iepuri.in");
    ofstream out("iepuri.out");
    in>>T;
    int i,aux;
    for (i=1;i<=T;i++)
    {
        in>>X>>Y>>Z>>A>>B>>C>>N;
        Fa_Ar(N-3);
        aux=(X*Ar[1][3]+Y*Ar[2][3]+Z*Ar[3][3]);
        out<<aux<<"\n";
    }
}
void Prod(unsigned long long a[4][4],unsigned long long b[4][4],unsigned long long c[4][4])
{int i,j,z;
    for (i=1;i<=3;i++)
    for (j=1;j<=3;j++)
    c[i][j]=0;
    for (i=1;i<=3;i++)
        for (j=1;j<=3;j++)
            for (z=1;z<=3;z++)
            c[i][j]+=((a[i][z]*b[z][j])%666013);
}
void Copie(unsigned long long a[4][4],unsigned long long b[4][4])
{int i,j;
      for (i=1;i<=3;i++)
        for (j=1;j<=3;j++)
        a[i][j]=b[i][j];
}
void Fa_Ar(int n)
{int i,j;
    Ar[1][1]=0;Ar[2][1]=1;Ar[3][1]=0;Ar[1][2]=0;Ar[2][2]=0;Ar[3][2]=1;Ar[1][3]=C;Ar[2][3]=B;Ar[3][3]=A;
 //   for (i=1;i<=3;i++){for (j=1;j<=3;j++)cout<<Ar[i][j]<<" ";cout<<"\n";}cout<<"\n";
    unsigned long long P[4][4];unsigned long long aux[4][4];
    Copie(P,Ar);
    while (n>0)
    {
        if (n%2==1)
        {
            Prod(Ar,P,aux);Copie(Ar,aux);
        }
       n/=2;
       Prod(P,P,aux);Copie(P,aux);
       /*for (i=1;i<=3;i++){for (j=1;j<=3;j++)cout<<Ar[i][j]<<" ";cout<<"\n";}cout<<"\n";for (i=1;i<=3;i++){for (j=1;j<=3;j++)cout<<P[i][j]<<" ";cout<<"\n";}cout<<"\n";*/
    }
    //cout<<"\n\n\n";
}