Pagini recente » Cod sursa (job #312086) | Monitorul de evaluare | Monitorul de evaluare | Profil eduard | Cod sursa (job #2521885)
#include <fstream>
using namespace std;
ifstream fin("factoriale.in");
ofstream fout("factoriale.out");
int n, k, f[102], nr, Prim[102], i, j, sol[1000002], total[102], x, nrcif = 1;
void inmultire(int mare[], int &nrcifre, int mic){
int t = 0, aux = 0;
for(int i = 1;i<=nrcifre;i++){
aux = (t + mare[i]*mic)%10;
t = (t + mare[i]*mic)/10;
mare[i] = aux;
}
while(t != 0){
mare[++nrcifre] = t%10;
t /= 10;
}
}
int main(){
fin>>n>>k;
f[0] = f[1] = 1;
for(i=2;i<=100;i++)
if(f[i] == 0){
Prim[++nr] = i;
for(j=i+i;j<=100;j+=i)
f[j] = 1;
}
for(i=1;i<=n;i++){
fin>>x;
for(j=1;j<=nr && Prim[j]<=x;j++){
int exp = 0, factor = Prim[j];
while(x>=factor){
exp += x/factor;
factor *= Prim[j];
}
total[j] += exp;
}
}
sol[1] = 1;
for(j=1;j<=nr;j++)
if(total[j]%k != 0){
for(i=1;i<=k-total[j]%k;i++)
inmultire(sol, nrcif, Prim[j]);
}
for(i=nrcif;i>0;i--)
fout<<sol[i];
return 0;
}