Cod sursa(job #313376)

Utilizator doru.nituNitu Doru Constantin doru.nitu Data 8 mai 2009 21:56:18
Problema Factoriale Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.81 kb
#include<stdio.h>
#include<math.h>
int a[101],i,n,j,k,k1,x,max,i1;
long long nr;
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++) ++a[j];
                      if(x>max) max=x;
                    }
  k1=0;                 
  for(i1=4;i1<=max;i1++) { k1=0; 
                           i=i1; 
                           while(i%2==0) { k1++;
                                           i/=2;
                                         }
                           a[2]+=k1*a[i1];              
                           x=i;
                           k1=0;
                          for(j=3;j<=sqrt(x);j+=2) { while(i%j==0) { k1++;
                                                                     i/=j;
                                                                    }  
                                                     a[j]+=k1*a[i1];
                                                     k1=0;                                               
                                                   } 
                           x=a[i1];
                           a[i1]=0;                                       
                           if(i>1) a[i]+=x;                                  
                         }
 nr=1;                        
 for(i=2;i<=max;i++) if(a[i]&&a[i]<k) while(a[i]<k) { nr*=i;
                                                      a[i]++;
                                                    }   
 printf("%lld\n",nr);                                                                                    
 fclose(stdin);
 fclose(stdout);
 return 0;
}