Cod sursa(job #250971)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 1 februarie 2009 14:57:24
Problema Factoriale Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <stdio.h>   
  
int prim[103],x,n,k,i,d,e,j,rez,p;   
  
void fact(int a)   
{   
    e=0;   
    d=2;   
    while(a%d==0)   
    {   
        a/=d;   
        e++;   
    }   
    if (e>0)   
    prim[d]+=e;   
    d=3;   
    while(a!=1)   
    {   
        e=0;   
        while(a%d==0)   
        {   
            a/=d;   
            e++;   
        }   
        if (e>0)   
        prim[d]+=e;   
    d+=2;   
    }   
}   
  
int min(int a, int b)
{
    if (a>b) return b;
    return a;
}  
  
int main()   
{   
    freopen("factoriale.in","r",stdin);   
    freopen("factoriale.out","w",stdout);   
    scanf("%d %d",&n,&k);   
    for (i=1;i<=n;++i)   
    {   
        scanf("%d", &x);   
        for (j=2;j<=x;++j)   
              fact(j);   
    }   
    rez=1;   
    for (i=2;i<=100;++i)   
          if (prim[i]>0)   
               if (prim[i]%k!=0)   
                   {
                        p=1;
                        for (j=2;j<=k-min(prim[i]%k,k%prim[i]);++j)
                              p*=i;
                        rez*=p;
                    }   
    printf("%lld", rez);                  
    return 0;   
}