Cod sursa(job #313373)
Utilizator | Data | 8 mai 2009 21:55:41 | |
---|---|---|---|
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("%d\n",nr);
fclose(stdin);
fclose(stdout);
return 0;
}