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⌈d/(x+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+⌈d/(x+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≤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 n 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.
题意:运行一个程序需要d天,所幸Adilbek可以优化程序,如果他花x天优化程序(x是一个非负整数),程序会运行⌈d/(x+1)⌉天(⌈ ⌉是向上取整符号),那么总共花费的天数就是x+⌈d/(x+1)⌉天。问Adilbek是否能在n天内运行完程序。
#include<stdio.h> #include<math.h> int main() { int T; int n, d; int i; scanf("%d", &T); while(T --) { scanf("%d%d", &n, &d); if(d <= n) printf("Yes\n"); else { for(i = 1; i <= n; i ++) { double a = (double)(d) / (double)(i + 1);//一定要进行强制类型转换 if(i + (int)(ceil(a)) <= n) { break; } } if(i <= n) printf("Yes\n"); else printf("No\n"); } } return 0; }