#include<iostream>
using namespace std;
bool can(long long n , long long k,long long mid)
{
long long result=mid;
while(mid/k>0)
{
result+=(mid/k);
k*=k;
if(result>=n)
{
return true;
}
}
return result>=n;
}
int main()
{
long long n,k;
cin>>n>>k;
long long l=1 , r=n ,mid ,ans;
while(l<=r)
{
mid=(l+r)/2;
if(can(n , k ,mid))
{
ans=mid;
r=mid-1;
}else
{
l=mid+1;
}
}
cout<<ans<<endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmJvb2wgY2FuKGxvbmcgbG9uZyBuICwgbG9uZyBsb25nIGssbG9uZyBsb25nIG1pZCkKewogICAgbG9uZyBsb25nIHJlc3VsdD1taWQ7CiAgICB3aGlsZShtaWQvaz4wKQogICAgewogICAgICAgIHJlc3VsdCs9KG1pZC9rKTsKICAgICAgICBrKj1rOwogICAgICAgIGlmKHJlc3VsdD49bikKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXN1bHQ+PW47Cn0KaW50IG1haW4oKQp7CiAgICBsb25nIGxvbmcgbixrOwogICAgY2luPj5uPj5rOwogICAgbG9uZyBsb25nIGw9MSAsIHI9biAsbWlkICxhbnM7CiAgICB3aGlsZShsPD1yKQogICAgewogICAgICAgIG1pZD0obCtyKS8yOwogICAgICAgIGlmKGNhbihuICwgayAsbWlkKSkKICAgICAgICB7CiAgICAgICAgICAgIGFucz1taWQ7CiAgICAgICAgICAgIHI9bWlkLTE7CiAgICAgICAgfWVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGw9bWlkKzE7CiAgICAgICAgfQogICAgfQogICAgY291dDw8YW5zPDxlbmRsOwogICAgcmV0dXJuIDA7Cn0=