Cod sursa(job #2522265)

Utilizator Gabi1623Ghita Gabriel Gabi1623 Data 12 ianuarie 2020 11:28:38
Problema Factoriale Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <iostream>
#include <fstream>

using namespace std;

int p, n, k, i, j,f[1001], v[1001], x[1001], z[1001],s[10001];

int exp(int x, int p)
{
    int prod = p;

    int s = 0;

    while (prod <= x)
    {

        s+=x/prod;
        prod *= p;

    }

    return s;
}
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 ()
{
    ifstream fin ("factoriale.in");
    ofstream fout("factoriale.out");
    fin>>n>>k;

    for (i=1; i<=n; i++)
        fin>>x[i];

    for (i=2; i<=110; i++)
        if (f[i] == 0)
        {

            v[++p] = i;

            for (j=i+i; j<=110; j+=i)
                f[j] = 1;

        }
    for (i=1; i<=n; i++)
        for (j=1; j<=p; j++)

            z[j] += exp(x[i], v[j]);

    s[0] = s[1] = 1;

    for (i=1; i<=p; i++)
    {

        if (z[i] == 0)

            break;

        while (z[i]%k != 0)
        {

            prod(s, v[i]);
            z[i]++;

        }
    }

    for(i=s[0]; i>=1; i--)

        fout<<s[i];


    return 0;
}