题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=114355#problem/B
代码:
#include<stdio.h>
#include<string.h>
using namespace std;
__int64 n,k;
int judge(__int64 x)
{
__int64 ans=1;
__int64 kk=k;
__int64 flag=x;
while(ans)
{
ans=x/kk;
kk=kk*k;
flag=flag+ans;
}
//printf("%d\n",flag);
if(flag>=n)
return 1;
else
return 0;
}
int main()
{
scanf("%d%d",&n,&k);
int l=1,r=n;
int mid=1;
while(l!=r)
{
mid=(l+r)/2;
if(judge(mid)==1)
r=mid;
else if(judge(mid)==0)
l=mid;
if(l+1==r)
break;
}
if(judge(mid))
printf("%d\n",mid);
else
printf("%d\n",mid+1);
}
照着数据做题也是没谁了。