Pagini recente » Cod sursa (job #2341281) | Cod sursa (job #2405605) | Cod sursa (job #1224553) | Cod sursa (job #400414) | Cod sursa (job #431127)
Cod sursa(job #431127)
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
#define MAX 1000
#define BASE 10
typedef int Huge[1000];
void AtribValue(Huge H, unsigned long X){
H[0] = 0;
while (X) {
++H[0];
H[H[0]] = X % BASE;
X /= BASE;
}
}
void Mult(Huge H, unsigned long X){
int i;
unsigned long T=0;
for (i=1;i<=H[0];i++){
H[i]=H[i]*X+T;
T=H[i]/10;
H[i]=H[i]%10;
}
while (T){
H[++H[0]]=T%10;
T/=10;
}
}
int decomp[MAX],n,k,nr[MAX];
FILE* fin=fopen("factoriale.in","r");
FILE* fout=fopen("factoriale.out","w");
int main(){
fscanf(fin,"%d %d",&n,&k);
nr[0]=1;
for(int i=1;i<=n;i++){
fscanf(fin,"%d ",&nr[i]);
}
sort(nr+1,nr+n+1);
int maxd=1;
for(int i=0;i<n;i++){
for(int j=nr[i]+1;j<=nr[i+1];j++){
int tmp=j,d=2;
while(tmp>1){
while(tmp%d==0){
tmp/=d,decomp[d]+=n-i;
}
d++;
if(d>maxd){
maxd=d;
}
}
}
}
Huge res;
AtribValue(res,1);
for(int i=2;i<=maxd;i++){
if(decomp[i]%k!=0){
int d=k-decomp[i]%k;
while(d>0){
Mult(res,i),d--;
}
}
}
for(int i=res[0];i>0;i--){
fprintf(fout,"%d",res[i]);
}
fclose(fin);
fclose(fout);
return 0;
}