Cod sursa(job #2518349)

Utilizator Bogdan_BuzatuBuzatu Bogdan Mihai Bogdan_Buzatu Data 5 ianuarie 2020 16:01:41
Problema Factoriale Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <fstream>
using namespace std;
ifstream fin("factoriale.in");
ofstream fout("factoriale.out");
int sol[100010],ciur[130],f[130],p[130],x[130],n,k,v[130],nr;

void produs(int a[], int nrmic){

    int t=0;
    for(int i=1;i<=a[0];i++,t/=10){
        t+=a[i]*nrmic;
        a[i]=t%10;
    }
    for(;t;t/=10){
        a[0]++;
        a[a[0]]=t%10;
    }
}

int exponent(int x,int nrprim){

    int aux=nrprim,var=0;

    while(aux<=x){
        var+=x/aux;
        aux*=nrprim;
    }

    return var;

}

int main(){

    fin>>n>>k;
    for(int i=1;i<=n;i++){
        fin>>v[i];
    }

    ciur[1]=1;
    for(int i=2;i<=120;i++){
        if(ciur[i]==0){
            nr++;
            p[nr]=i;
            for(int j=i*2;j<=120;j+=i){
                ciur[j]=1;
            }

        }
    }

    for(int i=1;i<=n;i++){
        for(int j=1;j<=nr;j++){
            f[j]+=exponent(v[i],p[j]);
        }
    }

    sol[0]=1;
    sol[1]=1;
    for(int i=1;i<=nr;i++){
        if(f[i]==0){
            break;
        }
        while(f[i]%k!=0){
            produs(sol,p[i]);
            f[i]++;
        }
    }

    for(int i=sol[0];i>=1;i--){
        fout<<sol[i];
    }

}