Cod sursa(job #2520828)

Utilizator BogauuuBogdan Ivancu Bogauuu Data 9 ianuarie 2020 19:54:48
Problema Factoriale Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>

using namespace std;

ifstream fin ("factoriale.in");
ofstream fout("factoriale.out");

int nrp,n,k,i,j,prim[105],x[105],e[105],sol[100005];
bool v[115];

int exponent(int x, int p)
{
    int prod=p;
    int s=0;
    while (prod<=x)
    {
        s+=x/prod;
        prod*=p;
    }

    return s;
}

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!=0)
    {
        a[0]++;
        a[a[0]]=t%10;
        t/=10;
    }
}

int main ()
{
    fin >> n >> k;
    for (i=1;i<=n;i++) fin >> x[i];
    for (i=2;i<=105;i++) if (v[i]==0)
    {
        nrp++;
        prim[nrp]=i;
        for (j=2;i*j<=110;j++) v[i*j]=1;
    }
    for (i=1;i<=n;i++) for (j=1;j<=nrp;j++) e[j]+=exponent(x[i],prim[j]);
    sol[0]=sol[1]=1;
    for (i=1;i<=nrp;i++)
    {
        if (e[i]==0) break;
        while (e[i]%k!=0)
        {
            produs(sol,prim[i]);
            e[i]++;
        }
    }
    for(i=sol[0];i>=1;i--) fout << sol[i];

    return 0;
}