A. Deadline----思维/水

Adilbek was assigned to a special project. For Adilbek it means that he has n days to run a special program and provide its results. But there is a problem: the program needs to run for d days to calculate the results.

Fortunately, Adilbek can optimize the program. If he spends x (x is a non-negative integer) days optimizing the program, he will make the program run in ⌈dx+1⌉ days (⌈a⌉ is the ceiling function: ⌈2.4⌉=3, ⌈2⌉=2). The program cannot be run and optimized simultaneously, so the total number of days he will spend is equal to x+⌈dx+1⌉.

Will Adilbek be able to provide the generated results in no more than n days?

Input
The first line contains a single integer T (1≤T≤50) — the number of test cases.

The next T lines contain test cases – one per line. Each line contains two integers n and d (1≤n≤109, 1≤d≤109) — the number of days before the deadline and the number of days the program runs.

Output
Print T answers — one per test case. For each test case print YES (case insensitive) if Adilbek can fit in n days or NO (case insensitive) otherwise.

Example
inputCopy

3
1 1
4 5
5 11
outputCopy
YES
YES
NO
Note
In the first test case, Adilbek decides not to optimize the program at all, since d≤n.

In the second test case, Adilbek can spend 1 day optimizing the program and it will run ⌈52⌉=3 days. In total, he will spend 4 days and will fit in the limit.

In the third test case, it’s impossible to fit in the limit. For example, if Adilbek will optimize the program 2 days, it’ll still work ⌈112+1⌉=4 days.

注意ceil的精度问题



#include<bits/stdc++.h>
using namespace std;
int t,n,d;
int main()
{
	scanf("%d",&t);
	while(t--)
	{
		cin>>n>>d;
		if(d<=n)
		{
			puts("YES");
			continue;
		}
		bool f=false;
		for(double i=0;i<sqrt(d);i++)
		{
			if((i+(int)ceil(d/(i+1)))<=n)
			{
				f=true;
				break;
			}
		}
		if(f) puts("YES");
		else puts("NO");
	}
}
发布了284 篇原创文章 · 获赞 6 · 访问量 3791

猜你喜欢

转载自blog.csdn.net/qq_43690454/article/details/104002087