Cod sursa(job #2717087)

Utilizator PredescuSebastianIonPredescu Sebastian Ion PredescuSebastianIon Data 6 martie 2021 12:25:55
Problema Factoriale Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <fstream>

using namespace std;
ifstream f("factoriale.in");
ofstream g("factoriale.out");
int n,ok,nr,k,p[50],v[110],e[50],sol[100009];
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(int 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(int i=2; i<=100; i++)
    {
        ok=0;
        for(int j=2; ok==0 && j*j<=i; j++)
        {
            if(i%j==0)
            {
                ok=1;
            }
        }
        if(!ok)
        {
            p[++nr]=i;
        }
    }
    for(int i=1; i<=n; i++)
    {
        f>>v[i];
    }
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=nr; j++)
        {
            e[j]+=exponent(v[i],p[j]);
        }
    }
    sol[0]=sol[1]=1;
    for(int i=1; i<=nr; i++)
    {
        if(!e[i])break;
        while(e[i]%k)
        {
            produs(sol,p[i]);
            e[i]++;
        }
    }
    for(int i=sol[0]; i; i--)
    {
        g<<sol[i];
    }
    return 0;
}