Cod sursa(job #1219953)

Utilizator lucian666Vasilut Lucian lucian666 Data 15 august 2014 23:36:26
Problema Iepuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb



#include <fstream>
#include <cstring>

using namespace std;
ofstream out("iepuri.out");


const int MOD  =  666013 ;

int M[3][3] , A[3][3] , X , Y , Z ,a , b , c;

void mult(int A[3][3] , int B[3][3] )
{

    int C[3][3];

    for( int i = 0 ; i < 3 ; ++i )
    {
        for( int j = 0;  j < 3 ; ++j )
        {

            C[i][j] = 0;

            for( int  k = 0; k < 3 ; ++k )
            {

                C[i][j] += 1LL *  A[i][k] * B[k][j]  % MOD;
                C[i][j]%=MOD;

            }
        }

    }

    for( int i = 0 ; i < 3 ; ++i )
        for( int j = 0 ; j < 3 ; ++j )
            A[i][j] = C[i][j];


}

void poww( int p , int M[3][3] )
{




    for( ; p ; p >>=1 )
    {

        if( p & 1 )
        {
            mult( M , A );
        }

        mult( A , A );

    }

}

int main()
{

    ifstream in("iepuri.in");

    int T;

    in >> T;

    for( ; T ; --T )
    {

    int  n;

    in >> X >> Y >> Z >> a >> b >> c >> n;

    M[1][0] = M[1][1] = M[1][2] = M[2][0] = M[2][1] = M[2][2] = 0;
    M[0][0] = X;
    M[0][1] = Y;
    M[0][2] = Z;

    A[0][0] = A[0][1] = A[1][1] = A[2][0] = 0;
    A[0][2] = c;
    A[1][0] = 1;
    A[1][2] = b;
    A[2][1] = 1;
    A[2][2] = a;


    poww( n-2 , M );

    out << M[0][2]%MOD<< '\n';

    }

    return 0;
}