Cod sursa(job #1946038)

Utilizator LizaSzabo Liza Liza Data 29 martie 2017 20:56:57
Problema Iepuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int NMax=100000000;
const int MOD = 666013;
int T,X,Y,z,A,B,C,N;
int s[4][4], Z[4][4];

void Multiply(int A[4][4], int B[4][4])
{
  long long C[4][4] ;

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

  for(int i = 1; i <= 3; ++i)
    for(int j = 1; j <= 3; ++j)
      for(int k = 1; k <= 3; ++k)
        {
          C[i][j] += 1LL * A[i][k] * B[k][j];
          C[i][j] %= MOD;
        }


  for(int i = 1; i <= 3; ++i)
    for(int j = 1; j <= 3; ++j)
      A[i][j] = C[i][j];
}





int main()
{
    fin>>T;
    while(T)
        {

            fin>>X>>Y>>z>>A>>B>>C>>N;

             for(int i = 1; i <= 3; ++i)
                for(int j = 1; j <= 3; ++j){
                    s[i][j] = 0;
                       Z[i][j] = 0;
                }

     Z[2][1] = Z[3][2] =1; Z[1][3]  =C; Z[2][3] =B; Z[3][3] = A;

    s[1][1] = X; s[1][2]= Y; s[1][3] = z;
    while(N)
      {
        if(N % 2 == 1)
          Multiply(s,Z);
        Multiply(Z,Z);
        N = N / 2;
      }

    fout << s[1][1] << "\n";
    T--;

    }
    return 0;
}