蓝桥杯 积石成山越万重 知识点:二分

51 阅读1分钟

2.积石成山越万重 - 蓝桥云课 (lanqiao.cn)

题意让我们找满足条件的大于等于1e5的最小数,可以用二分的第一个板子做:

image.png

这里二分答案二分的就是一个k值,我们需要判断这个k值是否满足条件即可。

#include<bits/stdc++.h>
using namespace std;
bool check(int k)
{
	int sum=0;
	for(int i=1;i<=k;i++)
	{
		sum+=pow(ceil(sqrt(i)),2)-pow(floor(sqrt(i)),2);
		if(sum>=1e5)return true;
	}
return false;	
}
int main()
{
    int l=1,r=1e9;
    while(l<r)
    {
    	int mid=l+r>>1;
    	if(check(mid))r=mid;
    	else l=mid+1;
	}
	cout<<l<<endl;
	return 0;
}