Cod sursa(job #1597398)

Utilizator T.C.11Tolan Cristian T.C.11 Data 11 februarie 2016 22:39:25
Problema Iepuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <fstream>
#include <cstring>
#define MOD 666013

using namespace std;

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

long long int A[3][3];
long long int B[3][3];
long long int P[3][3];
int t,i,j,k,l,x,y,z,a,b,c,n;

void produs(long long int x[3][3], long long int y[3][3])
{
    long long int z[3][3];
    memset(z, 0, sizeof(z));
    for (int i=0;i<3;i++)
        for (int j=0;j<3;j++)
            for (int k=0;k<3;k++)
                z[i][j]+=x[i][k]*y[k][j]%MOD;
    for (int i=0;i<3;i++)
        for (int j=0;j<3;j++)
            x[i][j]=z[i][j];
}


int main()
{
    fin>>t;
    for (i=1;i<=t;i++)
    {
        fin>>x>>y>>z>>a>>b>>c>>n;
        memset(P, 0, sizeof(P));
        P[0][0]=x;
        P[0][1]=y;
        P[0][2]=z;
        memset(A, 0, sizeof(A));
        A[0][2]=c;
        A[1][2]=b;
        A[2][2]=a;
        A[1][0]=1;
        A[2][1]=1;
        memset(B, 0, sizeof(B));
        B[0][0]=1;
        B[1][1]=1;
        B[2][2]=1;
        n-=2;
        while (n)
        {
            if (n%2==0)
            {
                n/=2;
                produs(A,A);
            }
            else
            {
                n--;
                produs(B,A);
            }
        }
        produs(A,B);
        produs(P,A);
        fout<<P[0][0]<<"\n";
    }
    return 0;
}