Cod sursa(job #2734410)

Utilizator carinamariaCarina Maria Viespescu carinamaria Data 31 martie 2021 20:27:08
Problema Factoriale Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>
using namespace std;
ifstream cin("factoriale.in");
ofstream cout("factoriale.out");
int cnt[100005], v[105], exp[105], f[105], prim[105], n, x, i, j, k, p, nr, s;
int exponent(int p, int x) {
    int nr=p;
    int s=0;
    while (nr<=x){
        s+=x/nr;
        nr=nr*p;
    }
    return s;
}

void produs(int b, int a[]){
    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(){
    cin>>n>>k;
    for (i=1;i<=n;i++)
        cin>>v[i];
    for (i=2;i<=100;i++)
        if (f[i]==0) {
            prim[++p]=i;
            for (j=i+i;j<=100;j+=i)
                f[j]=1;
        }
    for (i=1;i<=n;i++)
        for (j=1;j<=p;j++)
            exp[j]=exp[j]+exponent(prim[j], v[i]);

    cnt[0]=1;
    cnt[1]=1;
    for (i=1;i<=p;i++) {
        if (exp[i] == 0)
            break;
        while (exp[i]%k!=0) {
            produs(prim[i], cnt);
            exp[i]++;
        }
    }
    for(i=cnt[0];i>=1;i--)
        cout<<cnt[i];
    return 0;
}