Cod sursa(job #378325)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 28 decembrie 2009 12:44:40
Problema Factoriale Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include<stdio.h>
#include<math.h>
int m[10001],n,k,f[101],f2[101];
void inmul (int b)
{
    int i;
    int x, t=0;
    for(i=1;i<=m[0] || t; i++)
    {
        if (i>m[0])
            m[i] = 0;
        x=m[i]*b+t;
        t=x/10;
        m[i]=x%10;
    }
    m[0]=i-1;
}

int main ()
{
    int i,j,val,pr,rad,cj;
    freopen("factoriale.in","r",stdin);
    freopen("factoriale.out","w",stdout);
    scanf("%d%d",&n,&k);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&val);
        for(j=2;j<=val;j++)
        {
            pr=2;
            rad=j/2;
            cj=j;
            while(cj>1 && pr<=rad)
            {
                while(cj%pr==0)
                {
                    f[pr]++;
                    cj/=pr;
                }
                pr++;
            }  //while
            if(cj>1)
                f[cj]++;
        }   //for
    }   //for
    
    for(i=2;i<=97;i++)
    {
        if(f[i]==0 || f[i]>=k)
            continue;
        f2[i]=k-f[i];
    }

    m[0]=1;
    m[1]=1;
    
    for(i=2;i<=97;i++)
    {
        while(f2[i])
        {
            f2[i]--;
            inmul(i);
        }   //while
    }   // for

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