传送

时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format:%lld

题目描述

多次查询[l,r]范围内的完全平方数个数

定义整数x为完全平方数当且仅当可以找到整数y使得y*y=x

输入描述:

第一行一个数n表示查询次数 之后n行每行两个数l,r 输出描述: 对于每个查询,输出一个数表示答案

示例1
输入

5
1 3
1 4
2 4
4 4
1 1000000000

输出

1
2
1
1

31622
备注:
n <= 100000
0<= l <= r <= 1000000000

题解:

签到题
l,r直接开方,注意l开方后向上取整。
r1-l1+1就是答案

代码:

#include<bits/stdc++.h>
using namespace std;
int a[100000005];
int pre[100000005];
int main()
{
   
	int t;
	cin>>t;
	int l,r;
	while(t--)
	{
   
		cin>>l>>r;
		int l1=sqrt(l);
		int r1=sqrt(r);
		if(l1*l1!=l)l1++;
		cout<<r1-l1+1<<endl;
	}
   return 0;
}