Cod sursa(job #2522532)

Utilizator AlexPascu007Pascu Ionut Alexandru AlexPascu007 Data 12 ianuarie 2020 17:33:02
Problema Factoriale Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <bits/stdc++.h>
#define DIM 110
using namespace std;
ifstream fin("factoriale.in");
ofstream fout("factoriale.out");
int n,k,i,j,p,x[DIM],prim[DIM],f[DIM],e[DIM],sol[100010];
int exponent(int x,int p) {
    int exp=0,nr=p;
    while (nr<=x) {
        exp+=x/nr;
        nr*=p;
    }
    return exp;
}
void produs(int A[],int x) {
    int t=0;
    for (int i=1;i<=A[0];i++) {
        A[i]=A[i]*x+t;
        t=A[i]/10;
        A[i]%=10;
    }
    while (t) {
        A[++A[0]]=t%10;
        t/=10;
    }
}
int main() {
    fin>>n>>k;
    for (i=1;i<=n;i++)
        fin>>x[i];
    for (i=2;i<=110;i++) {
        if (f[i]==0)
            prim[++p]=i;
        for (j=2*i;j<=110;j+=i)
            f[j]=1;
    }
    for (i=1;i<=n;i++)
        for (j=1;j<=p;j++)
            e[j]+=exponent(x[i],prim[j]);
    sol[0]=1, sol[1]=1;
    for (i=1;i<=p;i++) {
        if (e[i]==0)
            break;
        while (e[i]%k!=0) {
            produs(sol,prim[i]);
            e[i]++;
        }
    }
    for (i=sol[0];i>=1;i--)
        fout<<sol[i];
    return 0;
}