Cod sursa(job #2413377)

Utilizator smoc_georgemarianSmoc George-Marian smoc_georgemarian Data 23 aprilie 2019 12:51:21
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <bits/stdc++.h>
#define MOD 666013
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
int m[5][5],cop[5][5];
int x,y,z,a,b,c,n;
int t;
void inm(int a[5][5],int b[5][5],int c[5][5]);
void put(int k, int rez[5][5]);
void solve();
int main()
{fin>>t;
 while(t)
    {
     t--;
     solve();
    }

    return 0;
}
void solve()
{int i,j;
 fin>>x>>y>>z>>a>>b>>c>>n;
 for(i=1;i<=3;i++)
        for(j=1;j<=3;j++)
              m[i][j]=0;
 m[1][1]=a;
 m[1][2]=b;
 m[1][3]=c;
 for(i=2;i<=n;i++)
      m[i][i-1]=1;
 for(i=1;i<=3;i++)
        for(j=1;j<=3;j++)
              cop[i][j]=m[i][j];

  ///intial
 ///determin puterea
 put(n-2,m);
 int rez=0;
  rez=(rez+ m[1][1]*z)%MOD;

  rez=(rez+ m[1][2]*y)%MOD;

  rez=(rez+ m[1][3]*x)%MOD;
  fout<<rez<<'\n';

}
void put(int k, int rez[5][5])
{int i,j;
   int r1[5][5],r2[5][5];
   if(k==1)
      {for(i=1;i<=3;i++)
          for(j=1;j<=3;j++)
             rez[i][j]=m[i][j];
      return;
      }
   put(k/2,r1);
   put(k/2,r2);
   if(k%2)
   {//inm(rez,cop,rez);


    inm(r2,r1,rez);
    inm(cop,rez,rez);
   }
   else
   {
    inm(r2,r1,rez);

   }
}
void inm(int a[5][5],int b[5][5], int c[5][5])
{int i,j,suma=0,ct;
    for(i=1;i<=3;i++)///fiecare lin
        for(j=1;j<=3;j++)///fiecare col
            {
            suma=0;
            for( ct=1;ct<=3;ct++)
                suma=(suma+a[i][ct]*b[ct][j])%MOD;
            c[i][j]=suma;
            }
}