怎么错了,一直wa3
  • 板块CF1606B Update Files
  • 楼主masa
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/10/30 21:11
  • 上次更新2023/11/4 01:52:05
查看原帖
怎么错了,一直wa3
65600
masa楼主2021/10/30 21:11

找了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";
	}
}
2021/10/30 21:11
加载中...