题目链接:https://codeforces.com/gym/102780/problem/D
此题小数点精度卡在小数点后9位到11位
#include <bits/stdc++.h>
using namespace std;
long long int a,b;
long long int f(long long int l,long long int r)
{
if(l>r) return 0;
long long int mid=(l+r)/2;
double x=(double)(log(mid)/log(a));
if(abs(x*b-mid)<0.00000001)
{
//根据题目要求,要输入最小值,所以我们在找到一个值的时候要检验是否还有比它更小的值,如果有的话,就return更小的值
long long int ans=0;
ans=f(1,mid-1);
if(ans) return ans;
return mid;
}
if(x*b<mid)
{
return f(l,mid-1);
}
return f(mid+1,r);
}
int main()
{
cin>>a>>b;
printf("%lld\n",f(1,1e18));
return 0;
}