Cod sursa(job #3352216)

Utilizator Coman_DianaComan Diana Coman_Diana Data 25 aprilie 2026 11:33:07
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.28 kb
#include <iostream>
#include <fstream>

using namespace std;

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

#define MOD 666013

int mat_rez[4][4];
int baza[4][4];
long long rez;

void ridic ( int baza[4][4], int exp )
{
    int aux[4][4];
    int i, j, k, p, q;

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

    while ( exp != 0 ) {
        if ( exp % 2 == 0 ) {
            exp = exp / 2;
            for ( i = 1; i <= 3; i++ ) {
                for ( j = 1; j <= 3; j++ ) {
                    rez = 0;
                    for ( k = 1; k <= 3; k++ )
                        rez = ( rez + 1LL * baza[i][k] * baza[k][j] ) % MOD;
                    aux[i][j] = rez;
                }
            }
            for ( p = 1; p <= 3; p++ ) {
                for ( q = 1; q <= 3; q++ )
                    baza[p][q] = aux[p][q];
            }
        }
        else {
            exp--;
            for ( i = 1; i <= 3; i++ ) {
                for ( j = 1; j <= 3; j++ ) {
                    rez = 0;
                    for ( k = 1; k <= 3; k++ )
                        rez = (rez + 1LL * mat_rez[i][k] * baza[k][j]) % MOD;
                    aux[i][j] = rez;
                }
            }
            for ( p = 1; p <= 3; p++ ) {
                for ( q = 1; q <= 3; q++ )
                    mat_rez[p][q] = aux[p][q];
            }
        }


    }
}

int main()
{
    int x, y, z, a, b, c, i, n, t, j, ind;

    fin >> t;
    for ( ind = 1; ind <= t; ind++ ) {
        fin >> x >> y >> z >> a >> b >> c >> n;

        if ( n == 0 )
            fout << x % MOD << "\n";
        else if ( n == 1 )
            fout << y % MOD << "\n";
        else if ( n == 2 )
            fout << z % MOD << "\n";
        else {

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


          baza[1][2] = 1;
          baza[2][3] = 1;
          baza[3][1] = c;
          baza[3][2] = b;
          baza[3][3] = a;

          ridic ( baza, n - 2 );

          rez = (1LL * mat_rez[3][1] * x + 1LL * mat_rez[3][2] * y + 1LL * mat_rez[3][3] * z) % MOD;

          fout << rez << "\n";
        }
    }
    return 0;
}