Cod sursa(job #2066195)

Utilizator lupulescu2001Lupulescu Vlad lupulescu2001 Data 14 noiembrie 2017 19:23:14
Problema Iepuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<fstream>

using namespace std;

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

int A[3][3],X,Y,Z,D,B,C,N,T;

void Multiply(int G[3][3],int F[3][3])
{
    long long S[3][3];
    for(int i=0; i<3; i++)
        for(int j=0; j<3; j++)
        {
            S[i][j]=0;
            for(int k=0; k<3; k++)
                S[i][j]+=1LL*G[i][k]*F[k][j];
                S[i][j]%=666013;
        }
    for(int i=0;i<3;i++)
        for(int j=0;j<3;j++)
            G[i][j]=S[i][j];
}

int main()
{
    fin>>T;
    for(int i=1; i<=T; i++)
    {
        fin>>X>>Y>>Z>>D>>B>>C>>N;
        A[0][0]=A[0][1]=A[1][1]=A[2][0]=0;
        A[1][0]=A[2][1]=1;
        A[0][2]=C;
        A[1][2]=B;
        A[2][2]=D;
        int Sol[3][3]={0};
        Sol[0][0]=X;
        Sol[0][1]=Y;
        Sol[0][2]=Z;
        while(N>0)
        {
            if(N%2==1)
                Multiply(Sol,A);
                Multiply(A,A);
                N/=2;

        }
        fout<<Sol[0][0]%666013<<'\n';
    }
}