Pagini recente » Cod sursa (job #2724209) | Cod sursa (job #401644) | Cod sursa (job #1971597) | Cod sursa (job #2726862) | Cod sursa (job #2523441)
#include <fstream>
using namespace std;
ifstream f("factoriale.in");
ofstream g("factoriale.out");
int p[50], v[110], e[50], sol[100009];
int n, i, ok, j, nr, k;
int exponent ( int x, int p ){
int prod = p, sol = 0;
while ( prod <= x ){
sol += x/prod;
prod *= p;
}
return sol;
}
void produs ( int a[], int b ){
int t = 0;
for ( i=1; i <= a[0]; i++ ){
a[i] = a[i]*b+t;
t = a[i]/10;
a[i] %= 10;
}
while ( t ){
a[++a[0]] = t%10;
t /= 10;
}
return;
}
int main()
{
f>>n>>k;
for ( i = 2; i <= 100; i++ ){
ok = 0;
for ( j=2; ok == 0 && j*j <= i; j++ )
if ( i % j == 0 )
ok = 1;
if ( !ok )
p[++nr] = i;
}
for ( i=1; i <= n; i++ )
f>>v[i];
for ( i=1; i <= n; i++ )
for ( j=1; j <= nr; j++ )
e[j] += exponent( v[i], p[j] );
sol[0] = sol[1] = 1;
for ( i=1; i <= nr; i++ ){
if ( e[i] == 0 )
break;
while ( e[i]%k != 0 ){
produs( sol, p[i] );
e[i]++;
}
}
for ( i=sol[0]; i; i-- )
g<<sol[i];
return 0;
}