Cod sursa(job #135622)

Utilizator dominoMircea Pasoi domino Data 14 februarie 2008 00:41:40
Problema Factoriale Scor Ascuns
Compilator cpp Status done
Runda Marime 0.9 kb
#include <stdio.h>

#define MAX_VAL 105
#define FIN "factoriale.in"
#define FOUT "factoriale.out"

int N, K, cnt[MAX_VAL], Res[MAX_VAL];

void mul(int a[], int b)
{
    int i, t = 0;

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

int main(void)
{
    int i, j, x, n;

    freopen(FIN, "r", stdin);
    freopen(FOUT, "w", stdout);

    for (scanf("%d %d", &N, &K); N; --N)
    {
        scanf("%d", &x);
        for (i = 2; i <= x; ++i)
            for (n = i, j = 2; j <= n; ++j)
            {
                if (n%j) continue;
                for (; !(n%j); n /= j) ++cnt[j];
            }
    }
    Res[0] = Res[1] = 1;
    for (i = 1; i < MAX_VAL; ++i)
        for (j = 0; j < (K-cnt[i]%K)%K; ++j)
            mul(Res, i);

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

    return 0;
}