Adilbek was assigned to a special project. For Adilbek it means that he has nn 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 nn 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≤10^9 1≤d≤10^9 ) — 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 nn days or NO (case insensitive) otherwise.
Example
Input
3
1 1
4 5
5 11
Output
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 ⌈5/2⌉=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 ⌈11/2+1⌉=4 days.
题目分析,我们这个题首先我们可以看到是天花板函数当相除都时候,所以等下我们枚举的时候要处理一下,然后遍历找答案就行了,具体实现看代码。
#include<iostream>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n,m;int a=0;
cin>>n>>m;
for(int i=0;i<=n;i++)
{
if((m-1)/(i+1)+1+i<=n)//解释因为·这里要的是天花板函数,所以如果有小数要加1;
{
a=1;
cout<<"YES"<<endl;
break;
}
}
if(!a)
cout<<"NO"<<endl;
}
}