Cod sursa(job #2910899)

Utilizator MrPuzzleDespa Fabian Stefan MrPuzzle Data 25 iunie 2022 17:35:17
Problema Factoriale Scor 40
Compilator cpp-64 Status done
Runda 3_iulie Marime 1.3 kb
#include <fstream>
#include <iostream>
#include <algorithm>

using namespace std;


//ifstream f("in.in");
//ofstream g("out.out");

ifstream f("factoriale.in");
ofstream g("factoriale.out");

int n,k,x,sol=1;

int prime[105],ciurk=0;
int u[105],bonusu[105];
bool ciur[105];

void make_ciur(){
    for(int i=2;i<=100;i++){
        if(ciur[i]==0){
            for(int j=2;i*j<=100;j++){
                ciur[i*j] = 1;
            }
        }
    }
    for(int i=2;i<=100;i++){
        if(ciur[i]==0){
            ciurk++;
            prime[ciurk] = i;
        }
    }
}

void add_div_fact(int x){
    for(int i=1;prime[i] <= x && i<= ciurk;i++){
        int d = prime[i];
        while(x>=d){
            u[i]+=x/d;
            d *= prime[i];
        }
    }
}

int main(){

    make_ciur();

    f>>n>>k;
    for(int i=1;i<=n;i++){
        f>>x;
        add_div_fact(x);

        /*for(int j=1;j<=10;j++){
            cout<<u[j]<<" ";
        }
        cout<<'\n';*/
    }

    for(int i=1;i<=ciurk;i++){
        if(u[i]%k!=0){
            bonusu[i] = k - u[i]%k;
        }
    }

    for(int i=1;i<=ciurk;i++){
        for(int j=1;j<=bonusu[i];j++){
            sol *= prime[i];
        }
    }

    g<<sol;

    f.close();
    g.close();
    return 0;
}