Cod sursa(job #3361069)

Utilizator IzabelaJePloscaru Maria Izabela IzabelaJe Data 19 iulie 2026 20:20:23
Problema Factoriale Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <fstream>
using namespace std;
ifstream fin("factoriale.in");
ofstream fout("factoriale.out");
int N,K,x;
int ciur[101],prime[30],k;
int apprime[30];
int produs[150];
void generare(){
    produs[0]=produs[1]=1;
    for(int i=2;i<=100;i++)
        if(ciur[i]==0){
            prime[++k]=i;
            for(int j=i+i;j<=100;j+=i)
                ciur[j]=1;
        }
}
void Legendre(int x){
    for(int i=1;i<=k;i++){
        int p=prime[i],sol=0;
        while(p<=x){
            sol+=x/p;
            p*=prime[i];
        }
        apprime[i]+=sol;
    }
}
void inmutire(int j,int produs[]){
    int t=0;
    for(int i=1;i<=produs[0];i++){
        produs[i]=produs[i]*j+t;
        t=produs[i]/10;
        produs[i]%=10;
    }
    while(t!=0){
        produs[++produs[0]]=t%10;
        t/=10;
    }
}
int main()
{
    generare();
    fin>>N>>K;
    for(int i=1;i<=N;i++){
        fin>>x;
        Legendre(x);
    }
    for(int i=1;i<=k;i++){
        if(apprime[i]%K>0){
            int rest=(K-apprime[i]%K)%K;
            for(int j=1;j<=rest;j++)
                inmutire(prime[i],produs);
        }
    }
    for(int i=produs[0];i>=1;i--)
        fout<<produs[i];
    return 0;
}
// 2 3 5 7 11 13 17 19 23 27 29 31 37 41 43 47 53 57 59 61 67 83 87 89 91 97