Cod sursa(job #2515440)

Utilizator BAlexandruBorgovan Alexandru BAlexandru Data 28 decembrie 2019 16:21:41
Problema Factoriale Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>

using namespace std;

ifstream f("factoriale.in");
ofstream g("factoriale.out");

int n,m,k,x,i,j;
int p[100];
int rez[10000];

void desc(int x)
{
    while (x%2==0)
    {
        x=x/2;
        p[2]++;
    }
    while (x%3==0)
    {
        x=x/3;
        p[3]++;
    }
    while (x%5==0)
    {
        x=x/5;
        p[5]++;
    }
    while (x%7==0)
    {
        x=x/7;
        p[7]++;
    }
    if (x>1)
        p[x]++;
}

void inmultire(int a[], int x)
{
    int i,t=0;
    for (i=1;i<=a[0];i++)
    {
        t+=a[i]*x;
        a[i]=t%10;
        t=t/10;
    }
    while (t)
    {
        a[0]++;
        a[a[0]]=t%10;
        t=t/10;
    }
}

int main()
{
    f>>n>>k;
    for (i=1;i<=n;i++)
    {
        f>>x;
        for (j=1;j<=x;j++)
            desc(j);
    }

    rez[0]=rez[1]=1;
    for (i=1;i<=100;i++)
        if (p[i] && p[i]%k)
            for (j=1;j<=k-(p[i]%k);j++)
                inmultire(rez,i);

    for (i=rez[0];i>=1;i--)
        g<<rez[i];

    return 0;
}