Cod sursa(job #132228)

Utilizator filipbFilip Cristian Buruiana filipb Data 5 februarie 2008 14:01:32
Problema Factoriale Scor Ascuns
Compilator cpp Status done
Runda Marime 1.15 kb
#include <stdio.h>

typedef int hugeNR[10005];

int N, K, E, prim[105], exp[105], x[105];
hugeNR Res;

void inm(hugeNR a, int nr)
{
    int i, t = 0;

    for (i = 1; i <= a[0] || t; i++, t /= 10)
    {
        if (i > a[0]) a[i] = 0;
        a[i] = (t += a[i] * nr) % 10;
    }
    a[0] = i-1;
}

int main(void)
{
    int i, j, k;
    
    freopen("factoriale.in", "r", stdin);
    freopen("factoriale.out", "w", stdout);

    scanf("%d %d", &N, &K);
    for (i = 2; i <= 100; i++)
        prim[i] = 1;
    for (i = 2; i <= 100; i++)
        if (prim[i])
            for (j = i+i; j <= 100; j += i)
                prim[j] = 0;

    for (; N; N--)
    {
        scanf("%d", &k);
        for (i = 2; i <= k; i++)
            if (prim[i])
            {
                for (j = i; j <= k; j *= i)
                    exp[i] += k/j;
            }
    }

    Res[0] = Res[1] = 1;
    for (i = 2; i <= 100; i++)
        if (exp[i] % K)
            for (j = 1; j <= K - exp[i] % K; j++)
                inm(Res, i);

    for (i = Res[0]; i >= 1; i--)
        printf("%d", Res[i]);
    printf("\n");
            
    return 0;
}