Cod sursa(job #2911158)

Utilizator carinamariaCarina Maria Viespescu carinamaria Data 27 iunie 2022 12:17:08
Problema Factoriale Scor 70
Compilator cpp-64 Status done
Runda 3_iulie Marime 1.11 kb
#include <fstream>
using namespace std;
ifstream cin("factoriale.in");
ofstream cout("factoriale.out");
int i, j, n, m, k, p;
int f[105], prim[105], exp[105], cnt[105], v[105];
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]+=exponent(prim[j], v[i]);

    cnt[0]=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;
}