Cod sursa(job #2521067)

Utilizator LeVladzCiuperceanu Vlad LeVladz Data 10 ianuarie 2020 12:49:39
Problema Factoriale Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream>

using namespace std;

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

int n,k,i,j,p,prim[55],x[105],exp[55],sol[105];
bool w[105];

int exponent(int n, int x)
{
    int nr = 0; int px = x;
    while (n/px > 0)
    {
        nr += n/px;
        px *= x;
    }
    return nr;
}

void ciur()
{
    w[0] = w[1] = 1;
    for (int i=2; i<=100; i++)
        if (!w[i])
        {
            prim[++p] = i;
            for (int j=i+i; j<=100; j+=i)
                w[j] = 1;
        }
}

void prod(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;
    }
}

int main()
{
    fin >> n >> k; ciur();
    for (i=1; i<=n; i++)
        fin >> x[i];
    for (i=1; i<=p; i++)
        for (j=1; j<=n; j++)
            exp[i] += exponent(x[j], prim[i]);
    sol[0] = sol[1] = 1;
    for (i=1; i<=p; i++)
        while (exp[i]%k != 0)
        {
            prod(sol, prim[i]);
            exp[i]++;
        }
    for (i=sol[0]; i>=1; i--)
        fout << sol[i];
    return 0;
}