Cod sursa(job #2405021)

Utilizator cyg_SerbanBFlorin Gheorghe cyg_SerbanB Data 13 aprilie 2019 20:13:12
Problema Factoriale Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <bits/stdc++.h>
using namespace std;
int finput[105];
long long fact[105],total[105];
unsigned long long int ans=1;
int main()
{
    freopen("factoriale.in","r",stdin);
    freopen("factoriale.out","w",stdout);
    int n,k,x,d,cx,ma=0,i,j;
    scanf("%d%d",&n,&k);
    for(i=1; i<=n; ++i)
    {
        scanf("%d",&x);
        if(x>ma)
            ma=x;
        finput[x]++;
    }
    for(x=2;x<=ma;++x)
    {
        cx=x;
        for(d=2;d*d<=x;++d)
            if(x%d==0)
                {
                while(cx>1)
                    cx/=d,fact[d]++;
                }
        if(cx>1)
            fact[cx]++;
        if(finput[x])
        {
            for(i=2;i<=ma;i++)
                total[i]+=1LL*finput[x]*fact[i];
        }
    }
    for(i=1;i<=ma;i++)
        if(total[i]%k!=0)
        {
            x=k-total[i]%k;
            for(j=1;j<=x;++j)
                ans*=1LL*i;
        }
    printf("%lld",ans);
    return 0;
}