Cod sursa(job #332775)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 19 iulie 2009 18:35:52
Problema Factoriale Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.79 kb
#include <stdio.h>         
        
#define Base  1000 

int prim[123],x,n,k,i,d,e,j,rez[1000],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;         
    }         
}         
     
void init(int cif)   
{int i,t=0;   
 for(i=1;i<=rez[0]||t;++i)   
    { t+=rez[i]*cif;   
      rez[i]=t%Base;   
      t/=Base;   
    }   
    rez[0]=i-1;   
}   


        
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[0]=1;   
    rez[1]=1;        
        
    for (i=2;i<=100;++i)         
          if (prim[i]>0)         
               {   
                  if (prim[i]%k!=0)   
                  {   
                  p=1;   
                  for (j=1;j<=k-(prim[i]%k);++j)      
                        //p*=i;      
                        //rez*=p;  
                         init(i);				  
                  }           
               }         
    //printf("%d", rez);  
    printf("%d",rez[rez[0]]);   
    for(i=rez[0]-1;i>0;--i)   
        printf("%03d",rez[i]);   		  
    return 0;         
}