Cod sursa(job #3368008)

Utilizator Tudor_Iatagan2Iatagan Tudor Tudor_Iatagan2 Data 12 octombrie 2026 18:15:45
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.78 kb
#include <fstream>
#define MOD 666013
using namespace std;
ifstream cin("iepuri.in");
ofstream cout("iepuri.out");
int cp[4][4], baza[4][4], rez[4][4];
void ridic( int exp, int baza[4][4], int rez[4][4] ){
    int i, j, k;
    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;
        while( exp != 0 ){
            if( exp % 2 == 0 ){
                exp/=2;
                for( i = 1; i <= 3; i++ )
                    for( j = 1; j <= 3; j++ ){
                        cp[i][j]=0;
                        for( k = 1; k <= 3; k++ )
                            cp[i][j]+=(1LL*baza[i][k]*baza[k][j])%MOD;
                    }
                for( i = 1; i <= 3; i++ )
                    for( j = 1; j <= 3; j++ )
                        baza[i][j]=cp[i][j];
            }
            else{
                exp--;
                for( i = 1; i <= 3; i++ )
                    for( j = 1; j <= 3; j++ ){
                        cp[i][j]=0;
                        for( k = 1; k <= 3; k++ )
                            cp[i][j]+=(1LL*rez[i][k]*baza[k][j])%MOD;
                    }
                    for( i = 1; i <= 3; i++ )
                        for( j = 1; j <= 3; j++ )
                            rez[i][j]=cp[i][j];
            }
        }
}
int main()
{
    int t, i, x, y, z, a, b, c, n;
    cin>>t;
    for( i = 1; i <= t; i++ ){
        cin>>x>>y>>z>>a>>b>>c>>n;
        n-=2;
        baza[1][1]=baza[1][3]=baza[2][1]=baza[2][2]=0;
        baza[1][2]=baza[2][3]=1;
        baza[3][1]=c;
        baza[3][2]=b;
        baza[3][3]=a;
        ridic(n,baza,rez);
        cout<<(1LL*rez[3][1]*x+1LL*rez[3][2]*y+1LL*rez[3][3]*z)%MOD<<'\n';
    }
  return 0;
}