Cod sursa(job #461420)

Utilizator SpiderManSimoiu Robert SpiderMan Data 6 iunie 2010 18:49:24
Problema Factoriale Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <cstdio>

const char FIN[] = "factoriale.in", FOU[] = "factoriale.out";
const int MAX_N = 105, MAX_C = 100005;

int N, K;
int put[MAX_N], V[MAX_N];
int MIN[MAX_C] = { 1, 1 };

void mul (int A[], int B) // A[] <- A[] * B
{
    int i, t = 0;
    for (i = 1; i <= A[0] || t; i++, t /= 10)
        A[i] = (t += ( i <= A[0] ? A[i] : A[i] = 0 )  * B) % 10;

    A[0] = i - 1;
}

void write ( int A[] )
{
    for ( int i = A[0]; i; --i ) printf("%d", A[i]);
}

int main ()
{
    freopen(FIN, "r", stdin);
    freopen(FOU, "w", stdout);

    scanf("%d %d", &N, &K);

    for (int i = 1; i <= N; ++i)
        scanf("%d", &V[i]);

    for (int i = 1; i <= N; ++i)
        for (int j = 2; j <= V[i]; ++j)
        {
            int aux = j;
            for (int k = 2; aux > 1 && k <= aux; ++k)
                for ( ; aux % k == 0; ++put[k], aux /= k) ;
        }


    MIN[0] = MIN[1] = 1;

    for (int i = 2; i <= 100; ++i)
        for ( ; put[i] % K ; ++put[i], mul ( MIN, i ) ) ;

    write ( MIN );

    return 0;
}