Pagini recente » Clasament Junior Challenge 2016 Runda 2 | Cod sursa (job #2694511) | Cod sursa (job #1358970) | Cod sursa (job #3218262) | Cod sursa (job #438183)
Cod sursa(job #438183)
#include<stdio.h>
long long i , j , x , n , p , q , pi [10001] , pp[10001] ;
void div()
{
long long putere;
for(i=2;i*i<=p;i++)
{
putere=0;
while(p%i==0)
{
putere++;
p/=i;
}
if(putere==0)
continue;
pi[++j]=i;
pp[j]=putere*q;
}
if(p!=1)
{
pi[++j]=p;
pp[j]=q;
}
}
long long put(long long x,long long y)
{
long long xy=0;
while(x)
{
xy+=x/y;
x/=y;
}
return xy;
}
bool verif(long long n)
{
for(int i=1;i<=j;i++)
if(put(n,pi[i])<pp[i])
return 0;
return 1;
}
long long caut()
{
long long x;
long long pas=(long long)32;
for(x=0;pas;pas>>=1)
{
if(!verif(x+pas))
x+=pas;
}
return x;
}
int main()
{
freopen("gfact.in","r",stdin);
freopen("gfact.out","w",stdout);
scanf("%lld%lld",&p,&q);
div();
p=1;
printf("%lld",caut()+1);
return 0;
}