Cod sursa(job #2093380)

Utilizator mariaBmaria blaj mariaB Data 23 decembrie 2017 16:27:40
Problema GFact Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
int prim(int a){
    for(int i=2;i*i<=a;++i){
        if(a%i==0)
            return 0;
    }
    return 1;
}
int leg(int a,int p){
    int rez=1,q=0;
    while(rez*p<=a){
        rez*=p;
        q+=a/rez;
    }
    return q;
}
int main()
{
    ifstream cin("gfact.in");
    ofstream cout("gfact.out");
    int p,q,fact=0;
    cin>>p>>q;
    for(int i=sqrt(p);i>=p;i++){
        if(p%i==0 && prim(i)==1){
            fact=p;
            break;
        }
    }
    if(fact==0)
        fact=p;
    long long dr=fact*q,st=1,sol;
    while(st<=dr){
        long long poz=(st+dr)/2;
        if(leg(poz,fact)>=q){
            sol=poz;
            dr=poz-1;
        }
        else
            st=poz+1;
    }
    cout<<sol;
    return 0;
}