Cod sursa(job #2737147)

Utilizator mihaistamatescuMihai Stamatescu mihaistamatescu Data 4 aprilie 2021 14:36:47
Problema Factoriale Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <fstream>
#include <algorithm>
using namespace std;
long long n,k,p,c,j,a,x,i,d,e,f[110];
int rez[100002],prim[110];
void produs(int *a,int *c,int b) {
    long long t=0,aux=0;
    for (long long i=1;i<=a[0];i++) {
        aux=a[i]*b+t;
        c[i]=aux%10;
        t=aux/10;
    }
    c[0]=a[0];
    while (t!=0) {
        c[0]++;
        c[c[0]]=t%10;
        t/=10;
    }
}
int main(){
    ifstream fin("factoriale.in");
    ofstream fout("factoriale.out");
    for (i=2;i<=100;i++){
        if (!prim[i])
            for (j=i+i;j<=100;j+=i){
                prim[j]=1;
            }
    }
    fin>>n>>k;
    for (i=1;i<=n;i++){
        fin>>a;
        for (j=2;j<=a;j++){
            p=j;
            if (prim[j]==0){
                while (p<=a){
                    f[j]+=a/p;
                    p*=j;
                }
            }
        }
    }
    rez[1]=rez[0]=1;
    for (i=2;i<=100;i++){
        if (f[i]>0){
            if (f[i]%k!=0){
                e=k-f[i]%k;
                for (j=1;j<=e;j++){
                    produs(rez,rez, i);
                }
            }
        }
    }
    for (i=rez[0];i>=1;i--){
        fout<<rez[i];
    }
    return 0;
}