Pagini recente » Cod sursa (job #2455381) | Cod sursa (job #2142799) | Cod sursa (job #2702097) | Cod sursa (job #165315) | Cod sursa (job #1549675)
#include <cstdio>
#define SQRT 1000000
int exp[SQRT],fact[SQRT];
inline int cauta(int nr,int n){
int flag=1,i,con;
long long p;
i=0;
while(i<n&&flag==1){
p=fact[i];
con=0;
while(p<=nr){
con+=(nr/p);
p=p*fact[i];
}
if(con<exp[i])
flag=0;
i++;
}
return flag;
}
int main(){
FILE*fi,*fout;
int a,b,d,e,rez,pas,n;
fi=fopen("gfact.in" ,"r");
fout=fopen("gfact.out" ,"w");
fscanf(fi,"%d%d" ,&a,&b);
d=2;
n=0;
while(d*d<=a){
e=0;
while(a%d==0){
a/=d;
e++;
}
exp[n]=e*b;
fact[n]=d;
n++;
d++;
}
if(a>1){
exp[n]=b;
fact[n]=a;
n++;
}
rez=0;
for(pas=1<<20;pas;pas>>=1)
if(cauta(rez+pas,n)==0)
rez+=pas;
fprintf(fout,"%d" ,rez+1);
fclose(fi);
fclose(fout);
return 0;
}