Cod sursa(job #3314898)

Utilizator Vicentiu123Savu Vicentiu Dorian Vicentiu123 Data 11 octombrie 2025 13:23:58
Problema GFact Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>
using namespace std;
int factG(int a, int b){
    int s=0;
    //cout<<1;
    while(a>=b){
        s+=a/b;
        a/=b;
    }
    //cout<<1;
    return s;
}
int f[33], p[33];
int main()
{
    ifstream fin("gfact.in");
    ofstream fout("gfact.out");
    int x, y, st, cx, dr, k, i, j, g;
    fin>>x>>y;
    cx=x;
    i=2;
    j=0;
    while(cx>=i*i){
        if(cx%i==0){
            f[j]=i;
            while(cx%i==0){
                cx/=i;
                p[j]++;
            }
            p[j]*=y;
            j++;
        }
        i++;
    }
    if(cx>1){
        f[j]=cx;
        p[j++]=y;
    }
    st=0, dr=1030000000;
    while(st+1<dr){
        int mij=(st+dr)/2;
       // cout<<st<<' '<<dr<<' ';
        k=mij;
       // cout<<mij<<' ';
        i=0;
        g=1;
        while(i<j){
            if(factG(k,f[i])<p[i]){
                g=0;
                //cout<<f[i];
                break;
            }
            i++;
        }
        if(g==1){
            dr=mij;
        }
        else{
            st=mij;
        }
        //cout<<'\n';
    }
    fout<<dr;
    return 0;
}