Pagini recente » Cod sursa (job #2539752) | Cod sursa (job #1841795) | Cod sursa (job #2523322) | Cod sursa (job #1939471) | Cod sursa (job #230260)
Cod sursa(job #230260)
#include<stdio.h>
int l[1000];int dim;
unsigned long int putere(int a,int b)
{
unsigned long int i;unsigned long int rez=a;
for (i=2;i<=b;i++)
{
rez=rez*a;
}
return rez;
}
int prim(int g)
{
int i,s=0;
for (i=1;i<=g;i++)
{
if ((g%i)==0) s++;
}
if (s==2) return 1; else return 0;
}
void desc( int nr)
{
dim=0;
int i;
while (nr!=1)
{
for (i=1;i<=1000;i++)
{
if ((prim(i)==1)&&((nr%i)==0))
{
dim++;
l[dim]=i;
nr=nr/i;
i=1002;
}
}
}
}
int main()
{
FILE *in=fopen("factoriale.in","r"),
*out=fopen("factoriale.out","w");
int v[100],n,put,i,j,nr,w[100],vect[100];
unsigned long int prod=1;
fscanf(in,"%d",&n);
fscanf(in,"%d",&put);
for (i=1;i<=n;i++)
{
fscanf(in,"%d",&vect[i]);
}
int max=0;
for (i=1;i<=n;i++)
{
if (vect[i]>max) max=vect[i];
}
for (i=1;i<=max;i++)
{
v[i]=0;
w[i]=0;
}
for (i=1;i<=n;i++)
{
for (j=1;j<=vect[i];j++)
{
++v[j];
}
}
for (i=1;i<=max;i++)
{
if (prim(i)==0)
{
desc(i);
for(j=1;j<=dim;j++)
{
v[l[j]]=v[l[j]]+v[i];
}
v[i]=0;
}
}
for (i=1;i<=max;i++)
{
if (v[i]!=0)
while (!((v[i]+w[i])%put==0))
{
++w[i];
}
}
for (i=1;i<=max;i++)
{
if (w[i]!=0)
prod=prod*putere(i,w[i]);
}
//for (i=1;i<=max;i++)
fprintf(out,"%d",prod);
return 0;
}