实际上是求sqrt(l) 和 sqrt(r )之间整数的个数
假设 2.3-4.5 之间的整数是 3 4 所以就 左端点向上取整,右端点向下取整,相减把结果+1就是之间的个数。0也符合条件
代码非常短
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
int n,l,r;
cin >> n;
while (n--)
{
cin >> l >> r;
int p = floor(sqrt(r));
int q = ceil(sqrt(l));
cout << p - q+1 << endl;
}
}

京公网安备 11010502036488号