链接:https://ac.nowcoder.com/acm/problem/14733
来源:牛客网

题目描述

多次查询[l,r]范围内的完全平方数个数 定义整数x为完全平方数当且仅当可以找到整数y使得yy=x
题目虽然标的二分吧,但是还是怎么简单怎么来;可以看出,对于l
r之间的完全平方数,可以由1l-1之间的完全平方数h个,1r个完全平方数k个,那么lr之间有k-h个完全平方数;l等于0的时候特判;而对于一个数x,完全平方数个数为sqrt(x)个,因为若m大于sqrt(x),则mm>x;

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
#define ll long long
int main()
{
     ll l,r;
    ll t;
    cin>>t;
    while(t--){
        cin>>l>>r;
        ll ans=0,ans1=0;
        if(l==0) cout<<(ll)sqrt(r)+1<<endl;
         else cout<<(ll)sqrt(r)-(ll)sqrt(l-1)<<endl;
    }
    return 0;
}