Cod sursa(job #2113003)

Utilizator Mihai145Oprea Mihai Adrian Mihai145 Data 24 ianuarie 2018 09:22:40
Problema Factoriale Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>
#define ELMAX 100
using namespace std;
ifstream fin("factoriale.in");
ofstream fout("factoriale.out");
int n, k, smen[ELMAX+2], ap[ELMAX+2];
unsigned long long p=1;
void desc(int val)
{
    int copie=val, f=3, e=0;
    while(val%2==0)
    {
        e++;
        val/=2;
    }
    ap[2]+=e*smen[copie];
    for(f=3; f*f<=copie; f+=2)
    {
        e=0;
        while(val%f==0)
        {
            e++;
            val/=f;
        }
        ap[f]+=e*smen[copie];
    }
    if(val) ap[val]=smen[copie];
}
int main()
{
    int i, x;
    fin>>n>>k;
    smen[1]=n;
    for(i=1; i<=n; i++)
    {
        fin>>x;
        smen[x+1]--;
    }
    ///SMEN
    for(i=1; i<=ELMAX; i++) smen[i]+=smen[i-1];
    for(i=2; i<=ELMAX; i++)
        if(smen[i]) desc(i);
    for(i=1; i<=ELMAX; i++)
        if(ap[i]%k!=0)
            p*=powl(i,k-ap[i]%k);
    fout<<p;
    return 0;
}