Cod sursa(job #1692634)

Utilizator marioviperconstantin mario marioviper Data 21 aprilie 2016 12:38:36
Problema Iepuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.41 kb
#include <fstream>

using namespace std;

const long long MOD = 666013;

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");

    long long A,B,C,X,Y,Z;
    long long Arr[3][3],R[3][3];
    long long N,T,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;
}