Pagini recente » Cod sursa (job #660638) | Cod sursa (job #2356913) | Cod sursa (job #3230353) | Monitorul de evaluare | Cod sursa (job #2258345)
#include <cstdio>
using namespace std;
FILE* FIN=freopen("gfact.in","r",stdin);
FILE* FOUT=freopen("gfact.out","w",stdout);
int v[2][1024],n,prim[45000];
void eratostene()
{
int p,l;
for(l=4;l<45000;l+=2)
prim[l]=1;
for(p=3;p<215;p+=2)
if(!prim[p])
for(l=p*p;l<45000;l+=p+p)
prim[l]=1;
}
void cit()
{
int x,y,i;
scanf("%d%d",&x,&y);
if(!(x%2))
{
v[0][n]=2;
while(!(x%2))
{
v[1][n]++;
x/=2;
}
n++;
}
for(i=3;i*i<=n;i+=2)
if(!(x%i))
{
v[0][n]=i;
while(!(x%i))
{
v[1][n]++;
x/=i;
}
n++;
}
if(x>1)
{
v[0][n]=x;
v[1][n]=1;
n++;
}
for(i=0;i<n;i++)
v[1][i]*=y;
}
long long int pow(int b,int e)
{
long long int s=1;
while(e)
s*=b,e--;
return s;
}
long int ap(long int z,long int p)
{
long int s=0,a=0,b=z,p2=1;
while(a<=p)
{
a*=b,a++;
p2*=b;
}
a--,a/=b;
p2/=b;
while(p)
{
s+=p2*(p/a);
p%=a;
a--,a/=b;
p2/=b;
}
return s;
}
void af()
{
long int i,x,s=1;
for(i=0;i<n;i++)
{
x=ap(v[0][i],v[1][i]);
if(x>s)
s=x;
}
printf("%d",s);
}
int main()
{
eratostene();
cit();
af();
return 0;
}