Pagini recente » Cod sursa (job #2907696) | Cod sursa (job #502378) | Cod sursa (job #614597) | Cod sursa (job #1600369) | Cod sursa (job #139108)
Cod sursa(job #139108)
#include <iostream.h>
#include <fstream.h>
#include <math.h>
int main()
{int n ,poz , k , x[101], prim [100] , m[101][101] , p , aux ,puterea2,xmax,putereaz[30];
unsigned long double z;
long i , j , l, y , puterea[100];
ifstream f("factoriale.in");
ofstream g("factoriale.out");
f>>n>>k;
xmax=0;
for (i=1; i<=n; i++)
{f>>x[i]; // citire
if(x[i]>xmax)
xmax=x[i];}
p=0;
for (i=2; i<=xmax; i++)
{aux=1;
for(j=2;j<=i/2; j++)
if(i%j==0)
aux=0;
if(aux==1)
{p++;
prim[p]=i;
puterea[p]=0;}
} // generare nr prime pana la xmax
for (i=1; i<=xmax; i++)
{aux=i;
for(j=1; j<=p; j++)
{puterea2=0;
while (aux!=0 && aux%prim[j]==0)
{puterea2++;
aux=aux/prim[j];}
m[i][j]=puterea2;} // factorizare fiecare nr de la 1 la xmax
}
for (i=1; i<=n;i++) // ia fiecare x
for (j=1; j<=p; j++) // ia fiecare nr prim
for (l=1;l<=x[i];l++) //ia fiecare termen a lui x[i]!
puterea[j]=puterea[j]+m[l][j]; // aduna puterile
for (i=1;i<=p;i++)
if(puterea[i]%k==0)
putereaz[i]=0;
else
{aux=puterea[i]%k;
putereaz[i]=k-aux;} // afla puterile factorilor primi din descompunerea lui z
z=1;
for (i=1; i<=p; i++)
if(putereaz[i]!=0)
z=z*pow(prim[i],putereaz[i]); // genereaza z
g<<z;
f.close();
g.close();
return 0;
}