Cod sursa(job #164611)

Utilizator tm_raduToma Radu tm_radu Data 24 martie 2008 16:09:06
Problema Factoriale Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <stdio.h>

int s[101];
int n, k;
int i, j, h, g;
int nrp, pr[101], exp[101];
int sol[1001];

void Multiply(int a);

int main()
{
    freopen("factoriale.in", "r", stdin);
    freopen("factoriale.out", "w", stdout);
    scanf("%d %d", &n, &k);
    for ( i = 2; i <= 100; i++ )
        for ( j = i; i*j <= 100; j++ )
            s[i*j] = 1;
    for ( i = 2; i <= 100; i++ )
        if ( !s[i] ) nrp++, pr[nrp] = i;
        
    for ( i = 1; i <= n; i++ )
    {
        scanf("%d", &h);
        for ( j = 1; j <= nrp; j++ )
        {
            g = pr[j];
            while ( h >= g ) exp[j]+=h/g, g *= pr[j];
        }    
    }
    sol[0] = sol[1] = 1;
    for ( i = 1; i <= nrp; i++ )
    {
        g = (k-(exp[i]%k))%k;
        for ( j = 1; j <= g; j++ )
            Multiply(pr[i]);
    }
    for ( i = sol[0]; i >= 1; i-- )
        printf("%d", sol[i]);
    printf("\n");
       
    return 0;
}

void Multiply(int a)
{
    int i, t = 0;  
    for ( i = 1; i <= sol[0] || t; i++, t /= 10 )
        sol[i] = (t += sol[i] * a) % 10;  
    sol[0] = i - 1;  
}