Pagini recente » Cod sursa (job #1612864) | Cod sursa (job #2258353)
#include <cstdio>
using namespace std;
FILE* FIN=freopen("gfact.in","r",stdin);
FILE* FOUT=freopen("gfact.out","w",stdout);
long long int v[2][1024],n;
void cit()
{
long long int x,y,i;
scanf("%lld%lld",&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 long int ap(long long int z,long long int p)
{
long 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 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()
{
cit();
af();
return 0;
}