Pagini recente » Cod sursa (job #2565244) | Cod sursa (job #1435532) | Cod sursa (job #1565255) | Cod sursa (job #2230630) | Cod sursa (job #2067543)
#include <iostream>
#include<cstdio>
#include <utility>
using namespace std;
int p,q,fina;
pair <int,int> divizori[100];
long long mihai_indreias_e_un_copiator(long long n,long long d){
long long rasp=0;
while(d<=n){
rasp+=1LL*(n/=d);
}
return rasp;
}
bool misu_copiaza(long long n){
long long i;
for(i=1;i<=fina;i++){
if(mihai_indreias_e_un_copiator(n,divizori[i].first)<divizori[i].second)
return false;
}
return true;
}
long long misu_nu_mai_copia(){
long long p2=1LL<<60;
long long pas=0;
while(p2>0){
if(misu_copiaza(pas+p2)==false)
pas+=1LL*p2;
p2/=2;
}
return pas+1;
}
int main()
{
FILE*fin,*fout;
fin=fopen("gfact.in","r");
fout=fopen("gfact.out","w");
fscanf(fin,"%d%d",&p,&q);
long long d=2,i=0;
while(d*d<=p){
if(p%d==0){
divizori[++i].first=d;
}
while(p%d==0){
p/=d;
divizori[i].second++;
}
divizori[i].second*=q;
d++;
}
if(p>1){
divizori[++i].first=p;
divizori[i].second=q;
}
fina=i;
fprintf(fout,"%lld",misu_nu_mai_copia());
return 0;
}