Cod sursa(job #2000926)

Utilizator ruxandramateiMatei Ruxandra ruxandramatei Data 15 iulie 2017 10:57:23
Problema Iepuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n,t;//date intrare
int iepuri[4][4], produs[4][4];

void inmultire(int a[4][4], int b[4][4]){
    int aux[4][4];
    for(int i = 1; i <= 3; i++)
      for(int j = 1; j <= 3; j++)
        aux[i][j] = 0;

    for(int i = 1; i <= 3; i++)
        for(int j = 1; j <= 3; j++){
            long long suma = 0;
            for(int k = 1; k <= 3;k++)
                suma += (a[i][k] * b[k][j])%666013;
            aux[i][j] = suma % 666013;
        }
    for(int i = 1; i <= 3; i++)
      for(int j = 1; j <= 3; j++)
          b[i][j] = aux[i][j];
}

void rezolvare(){
    while(n != 0){
        if(n % 2 == 1)
          inmultire(produs, iepuri);
        inmultire(produs, produs);
        n /= 2;
    }
}

void afisare(){
    out << iepuri[1][1]<<"\n";
}

void citire(){
    in >> t;
    for(int i = 1; i <= t; i++){

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

      int x,y,z,a,b,c;
      in >> x >> y >> z >> a >> b >> c >> n;
      n -= 2;
      iepuri[1][1] = z;
      iepuri[2][1] = y;
      iepuri[3][1] = x;
      produs[1][1] = a;
      produs[1][2] = b;
      produs[1][3] = c;
      produs[2][1] = 1;
      produs[3][2] = 1;
      rezolvare();
      afisare();
    }
}

int main()
{
    citire();
    return 0;
}