Pagini recente » Concurs clasa a 9-a (Avansati) | Cod sursa (job #2205587) | Cod sursa (job #143863) | Monitorul de evaluare | Cod sursa (job #155874)
Cod sursa(job #155874)
#include<fstream.h>
#include<math.h>
int prim (int n)
{
int i;
for (i=2;i<=sqrt(n);i++)
if (n%i==0) return 0;
return 1;
}
int calcul (int a, int p)
{
int i=1;
int s=0;
while (a>=pow(p,i))
s+=a/((int)pow(p,i++));
return s;
}
int main()
{
ifstream f("factoriale.in");
int n,k,v[101],i,j,p=0;
int max=-1;
f>>n>>k;
long b[101];int a[101];
for (i=1;i<=n;i++)
{
f>>v[i];
if (v[i]>max) max=v[i];
}
f.close();
for (i=2;i<=max;i++)
if (prim(i)) { a[++p]=i;b[p]=0;}
for (i=1;i<=n;i++)
for (j=1;j<=p && a[j]<=v[i];j++)
b[j]+=calcul(v[i],a[j]);
unsigned long q=1;
for (i=1;i<=p;i++) {
b[i]=k-b[i]%k;
if (b[i]!=k) q=q*pow(a[i],b[i]);
}
ofstream g ("factoriale.out");
g<<q;
g.close();
return 0;
}