Cod sursa(job #1143676)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 15 martie 2014 20:32:40
Problema Factoriale Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <cstdio>

using namespace std;

int fr[105][105],p[105];

inline void PreCalcul()
{
    int i,n,d;
    for(i=1;i<=100;++i)
    {
        n=i;
        while(n%2==0)
        {
            ++fr[i][2];
            n/=2;
        }
        d=3;
        while(n>1 && d*d<=n)
        {
            while(n%d==0)
            {
                ++fr[i][d];
                n/=d;
            }
            d+=2;
        }
        if(n>1)
            ++fr[i][n];
    }
}

int main()
{
    int N,K,i,r,x,j,k;
    long long sol=1,pr;
    freopen ("factoriale.in","r",stdin);
    freopen ("factoriale.out","w",stdout);
    PreCalcul();
    scanf("%d%d", &N,&K);
    for(i=1;i<=N;++i)
    {
        scanf("%d", &x);
        for(j=1;j<=x;++j)
            for(k=1;k<=100;++k)
                p[k]+=fr[j][k];
    }
    for(i=1;i<=100;++i)
    {
        r=p[i]%K;
        if(r)
            r=K-r;
        for(pr=1,j=1;j<=r;++j)
            pr*=i;
        sol*=pr;
    }
    printf("%lld\n", sol);
    return 0;
}