Cod sursa(job #250968)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 1 februarie 2009 14:50:46
Problema Factoriale Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <stdio.h>   
  
int prim[103],x,n,k,i,d,e,j,rez,max;   
  
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 power(int a, int b)   
{   
    if (b==1) return a;   
    else  
    if (b%2==0) {x=power(a,b/2);return x*x;}   
    else  
    if (b%2==1) {x=power(a,b/2);return x*x*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)   
                   rez*=power(i,k-k%prim[i]);   
    printf("%d", rez);                  
    return 0;   
}