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
1. 3 2. 1 1 3. 4 5 4. 5 11
Output
1. YES 2. YES 3. 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; } }