Cod sursa(job #1643890)

Utilizator CalarisPredut Denis Stefanita Calaris Data 9 martie 2016 20:36:59
Problema Iepuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <fstream>

using namespace std;

int A,B,C,X,Y,Z;
long long Arr[3][3],R[1][3];
const long long MOD = 666013;

inline void multiplyArray(long long A[3][3],long long B[3][3])
{
    long long C[3][3];
    int i,j,k;
    for(i=0;i<=2;++i)
        {
        for(j=0;j<=2;++j)
            {
                C[i][j]=0;
            for(k=0;k<=2;++k)
                {
                C[i][j]+=((A[i][k]%MOD)*(B[k][j]%MOD))%MOD;
                }
            }
        }
    for(i=0;i<=2;++i)
        for(j=0;j<=2;++j)
            A[i][j] = C[i][j] % MOD;
};

int main()
{
    fstream f("iepuri.in",ios::in);
    ofstream g("iepuri.out");

    int N,T,i,j,sol;

    f>>T;
    do{
            f>>X>>Y>>Z>>A>>B>>C>>N;

            N-=2;
            R[0][0]=X;
            R[0][1]=Y;
            R[0][2]=Z;

            Arr[0][0]=0;
            Arr[0][1]=0;
            Arr[0][2]=C;
            Arr[1][0]=1;
            Arr[1][1]=0;
            Arr[1][2]=B;
            Arr[2][0]=0;
            Arr[2][1]=1;
            Arr[2][2]=A;
            while(N)
                {
                if(N%2==1)multiplyArray(R,Arr);

                multiplyArray(Arr,Arr);
                N=N/2;
                }
            sol = (R[0][2])%MOD;
            g<<sol<<"\n";

        }while(--T);

    return 0;
}