A.Deadline

题意:寻找一个数x,使得(x + lceil frac{d}{x + 1} ceil)和n相等或者小于n,如果存在这样一个数x,就输出YES,否则输出NO,或者当d <= n时,输出YES。

分析:(x + lceil frac{d}{x + 1} ceil) 可以化成(lceil x + frac {d}{x + 1} ceil),因为x是整数,向上取整,依然等于x,所以可以合并到里面,然后,我们再进一步化公式,
(lceil {(x + 1)} + frac{d}{x + 1} - 1 ceil) (geq lceil 2sqrt{d} - 1 ceil) (基本不等式),那么我们只需要判断该最小值(2sqrt{d}-1)是否小于等于n,如果不存在,那么输出YES,否则输出NO。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

int main()
{
	int t;
	cin >> t;

	while (t--)
	{
		int n, d;
		cin >> n >> d;

		int t = static_cast<int>(ceil(2 * sqrt(d) - 1));

		if (t <= n)
			puts("YES");
		else
			puts("NO");

		
	}
	return 0;
}



原文地址:https://www.cnblogs.com/pixel-Teee/p/12199936.html