Cod sursa(job #3154222)

Utilizator xDemonstyMatei Haba Ionut xDemonsty Data 3 octombrie 2023 19:55:14
Problema Factoriale Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.57 kb
#include <fstream>
using namespace std;
ifstream cin("factoriale.in");
ofstream cout("factoriale.out");
long long n , k ;
long long prime [] = { 2 ,3 ,5, 7 , 11 , 13 , 17 , 19 , 23 , 29 , 31 , 37 , 41 , 43 , 47 , 53 , 59 , 61 , 67 , 71 , 73 , 79 , 83 , 89 , 97};
long long numere [ 202 ] [ 27 ] ;
long long tabel [ 35 ] ;
long long numar [ 1000005 ];

void produs ( int x  )
{
    int t = 0 ;

    for ( int i = 1; i <= numar [ 0 ] ; i ++ , t /= 10 )
    {
        t += numar [ i ] * x ;
        numar [ i ] = t % 10 ;
    }

    for (;t;t/=10 )
        numar [ ++numar [ 0 ] ] = t % 10 ;
}
int main()
{
    cin >> n >> k ;

    for ( int i = 1 ; i <= 100 ; i ++ )
    {
        long long b ;

        for ( int j = 0 ; j < 25  ; j ++ )
        {
            long long d = i ;

            while ( d % prime[j] == 0 )
            {
                numere [i ] [ j ] ++ ;
                d /= prime[j] ;
            }
             numere [ i ] [ j ] += numere [ i - 1 ] [ j ] ;
        }
    }

    for ( int i = 1; i <= n ; i ++ )
    {
        long long b ;
        cin >> b;
        for ( int j = 0 ; j < 25 ; j ++ )
        {
            tabel [ j ] += numere[ b ] [ j ];
        }
    }

    numar [ 0 ] = 1;

    numar [ 1 ] = 1;
    for ( int i = 0 ; i < 25 ; i ++ )
    {
        long long j = tabel [ i ] ;

        while ( j % k !=  0)
        {
            produs ( prime [ i ]) ;
            j ++ ;

        }
    }


    for ( int i = numar [ 0 ] ; i >= 1 ; i -- )
        cout << numar [ i  ];




    return 0;
}