Cod sursa(job #2382718)

Utilizator Vlad_lsc2008Lungu Vlad Vlad_lsc2008 Data 18 martie 2019 17:08:35
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.42 kb
#include <fstream>
#include <iostream>
#include  <cstdio>
#define mod 666013
using namespace std;


int init[4][4];
int vec[4];
int rez[4][4];

int t,x,y,z,a,b,c,n;

void mult_mat( int x[4][4],int y[4][4])
{
    int i,j,k;
    int aux[4][4];

    for(i=1;i<=3;i++)
        for(j=1;j<=3;j++)
            aux[i][j]=0;


    for(i=1;i<=3;i++)
        for(j=1;j<=3;j++)
            for(k=1;k<=3;k++)
                aux[i][j]+=x[i][k]*y[k][j];

     for(i=1;i<=3;i++)
        for(j=1;j<=3;j++)
            x[i][j]=aux[i][j];
}

void add_mat( int x[4][4],int y[4][4])
{
    int i,j,k;
    int aux[4][4];

    for(i=1;i<=3;i++)
        for(j=1;j<=3;j++)
            aux[i][j]=0;


    for(i=1;i<=3;i++)
        for(j=1;j<=3;j++)
                x[i][j]=x[i][k]+y[k][j];
}

int main()
{
    ifstream t1("iepuri.in");
    ofstream t2("iepuri.out");

    int p,i,j;
    t1>>t;

    for(;t;t--)
    {

        t1>>x>>y>>z>>a>>b>>c>>n;

        for(i=1;i<=3;i++)
            for(j=1;j<=3;j++) init[i][j]=0;
        init[1][1]=a; init[1][2]=b; init[1][3]=c;
        init[2][1]=1; init[3][2]=1;
        vec[1]=z; vec[2]=y; vec[3]=x;

         for(i=1;i<=3;i++)
          for(j=1;j<=3;j++) rez[i][j]=0;
        for(i=1;i<=3;i++) rez[i][i]=1;

        n-=2;

        for(p=1;p<=n;p*=2)
        {
            if(p&n) mult_mat(rez,init);
            mult_mat(init,init);
        }

        t2<< (1LL*rez[1][1]*z+rez[1][2]*y+rez[1][3]*x)%mod <<'\n';
    }


    return 0;
}