找了ac代码,对拍没问题
#include<iostream>
#include<cstdio>
using namespace std;
long long inline read()
{
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-')f=-1;
c=getchar();
}
while(c>='0'&&c<='9')
{
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
long long h,t,n,k,ans,sum,a[64]={1};
int l,r,mid;
int main()
{
freopen("1.out","r",stdin);
freopen("baoli.out","w",stdout);
for(int i=1;i<=63;i++)a[i]=a[i-1]<<1;
t=read();
for(;t>=1;t--)
{
n=read(),k=read();
if(n==1)
{
cout<<"0"<<"\n";
continue;
}
if(k==1)
{
cout<<n-1<<"\n";
continue;
}
l=0,r=63;
h=min(n,k);
while(l<r)
{
mid=(l+r)>>1;
if(a[mid]>=h)r=mid;
if(a[mid]<h)l=mid+1;
}
sum=a[r],ans=r;
if(sum<n)ans+=(n-sum+k-1)/k;
cout<<ans<<"\n";
}
}