Pagini recente » Cod sursa (job #3196889) | Cod sursa (job #259970) | Cod sursa (job #2440113) | Cod sursa (job #1427958) | Cod sursa (job #181963)
Cod sursa(job #181963)
#include <stdio.h>
typedef int Huge[2000];
FILE *f,*g;
int prim[30];
int a[100],n,k,x,i,j,temp,p;
Huge rez;
void genereazaprime(void)
{
char c[120];
int i,j;
for(i=0;i<=100;i++)c[i]=0;
for(i=2;i<=50;i++)
if(c[i]!=1)
for(j=i*2;j<=100;j+=i)
c[j]=1;
for(i=2;i<=100;i++)
if(c[i]==0)
prim[++prim[0]]=i;
}
void mult(Huge a, int x)
{
int i,t=0;
for(i=1;i<=a[0] || t;i++, t/=10)
a[i]=(t+=a[i]*x)%10;
a[0]=i-1;
}
void afisare(void)
{
int i;
for(i=rez[0];i>=1;i--)
fprintf(g,"%d",rez[i]);
}
int main()
{
f=fopen("factoriale.in","r");
g=fopen("factoriale.out","w");
genereazaprime();
fscanf(f,"%d %d\n",&n,&k);
for(i=1;i<=n;i++)
{
fscanf(f,"%d",&x);
for(p=2;p<=x;p++)
{
temp=p;
for(j=1;(j<=prim[0])&&(temp!=1);j++)
if(temp%prim[j]==0)
while(temp%prim[j]==0)
{
a[prim[j]]++;
temp/=prim[j];
}
}
}
rez[0]=1;
rez[1]=1;
for(i=2;i<=99;i++)
if(a[i]!=0)
if(a[i]%k!=0)
while(a[i]%k!=0)
{
a[i]++;
mult(rez,i);
}
afisare();
fclose(f); fclose(g);
return 0;
}