链接:https://ac.nowcoder.com/acm/problem/14733
来源:牛客网
题目描述
多次查询[l,r]范围内的完全平方数个数 定义整数x为完全平方数当且仅当可以找到整数y使得yy=x
题目虽然标的二分吧,但是还是怎么简单怎么来;可以看出,对于lr之间的完全平方数,可以由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; }