您的位置:首页 > 其它

Wannafly挑战赛6 A 完全平方数【预处理 + 二分】

2017-12-22 21:11 232 查看

A 完全平方数

题目描述

多次查询[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

题意:略

分析:预处理出来1e9以内的平方数,然后二分查找即可,别忘记0.

参考代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 10;

vector<ll> a;

void init() {
a.push_back(0);
for(ll i = 1;i*i <= 1000000000;i++) {
a.push_back(i*i);
}

}

int main() {
init();
int T;cin>>T;
while (T--) {
ll r,l;cin>>l>>r;
int res = upper_bound(a.begin(),a.end(),r) - lower_bound(a.begin(),a.end(),l);
cout<<res<<endl;
}
return 0;
}


如有错误或遗漏,请私聊下UP,thx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: