Pagini recente » Cod sursa (job #692848) | Cod sursa (job #1351932) | Cod sursa (job #2360843) | Cod sursa (job #1388637) | Cod sursa (job #1391483)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("factoriale.in");
ofstream fout("factoriale.out");
const int pmax= 100;
const int base= 10000;
int pr;
int v[pmax+1], p[pmax+1], x[pmax+1];
void h_write( vector <int> &x ) {
fout<<x.back();
for ( int i= (int)x.size()-2; i>=0; --i ) {
if ( x[i]<10 ) {
fout<<"000";
} else if ( x[i]<100 ) {
fout<<"00";
} else if ( x[i]<1000 ) {
fout<<"0";
}
fout<<x[i];
}
fout<<"\n";
}
void hn_mult( vector <int> &x, int &y ) {
for ( int i= 0, t= 0; i<(int)x.size() || t!=0; ++i ) {
if ( i>=(int)x.size() ) {
x.push_back(0);
}
x[i]= x[i]*y+t;
t= x[i]/base;
x[i]%= base;
}
}
int main( ) {
for ( int i= 2; i<=pmax; ++i ) {
if ( v[i]==0 ) {
for ( int j= i*i; j<=pmax; j+= i ) {
v[j]= 1;
}
p[++pr]= i;
}
}
int n, k;
fin>>n>>k;
for ( int i= 1; i<=n; ++i ) {
int a;
fin>>a;
for ( int j= 1; j<=pr; ++j ) {
for ( int aux= a; aux>0; aux/= p[j] ) {
x[j]= x[j]+aux/p[j];
}
}
}
vector <int> sol;
sol.push_back(1);
for ( int i= 1; i<=pr; ++i ) {
x[i]= (k-x[i]%k)%k;
for ( int j= 1; j<=x[i]; ++j ) {
hn_mult(sol, p[i]);
}
}
h_write(sol);
return 0;
}