二分(求l-r中的平方数)
定义整数x为完全平方数当且仅当可以找到整数y使得y*y=x
第一行一个数n表示查询次数
之后n行每行两个数l,r
输出描述:
对于每个查询,输出一个数表示答案
1 3
1 4
2 4
4 4
1 1000000000
2
1
1
31622
n <= 100000
0<= l <= r <= 1000000000
#include<math.h>
#include<stdio.h>
#include<algorithm>
using namespace std;
int a[],len;
void init(){
len=sqrt(1000000000.0)+;
for(int i=;i<=len;i++)//先打表
a[i]=i*i;
}
int binary_search(int key){
int left=,right=len,mid,ans;
while(left<=right){
mid=(left+right)/;
if(a[mid]<=key){
ans=mid;
left=mid+;
}
else
right=mid-;
}
return ans;
}
int main()
{
init();
int n,l,r;
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&l,&r);
int x=binary_search(l);
printf("%d\n",x);
int y=binary_search(r);
printf("%d\n",y);
int ans=y-x+;
int t=sqrt(l*1.0);
if(t*t!=l) //因为l是不是平方数,对最后结果有影响
ans--;
printf("%d\n",ans);
}
return ;
}
二分(求l-r中的平方数)的更多相关文章
- HDU XXXX:求[L,R]的素数数量(数位DP)
Problem G Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/131072K (Java/Other) Total S ...
- Python 和 R 中的一数多图
R # 一数多图 x <- 2:6 y <- 7:3 y1 <- y +2 opar <- par(no.readonly = TRUE) par(mfrow=c(2, 3)) ...
- 【C++函数重载】求3个数中最大的数(分别考虑整数、双精度数、长整数的情况)。
#include using namespace std; int main( ) { int max(int a,int b,int c); //函数声明 double max(double a,d ...
- SGU 275 To xor or not to xor 高斯消元求N个数中选择任意数XORmax
275. To xor or not to xor The sequence of non-negative integers A1, A2, ..., AN is given. You are ...
- BZOJ2440(全然平方数)二分+莫比乌斯容斥
题意:全然平方数是指含有平方数因子的数.求第ki个非全然平方数. 解法:比較明显的二分,getsum(int middle)求1-middle有多少个非全然平方数,然后二分.求1-middle的非全然 ...
- 主席树——求区间[l,r]不同数字个数的模板(向左密集 D-query)
主席树的另一种用途,,(还有一种是求区间第k大,区间<=k的个数) 事实上:每个版本的主席树维护了每个值最后出现的位置 这种主席树不是以权值线段树为基础,而是以普通的线段树为下标的 /* 无修改 ...
- hdu 4630 查询[L,R]区间内任意两个数的最大公约数
No Pain No Game Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- UPC 2224 Boring Counting (离线线段树,统计区间[l,r]之间大小在[A,B]中的数的个数)
题目链接:http://acm.upc.edu.cn/problem.php?id=2224 题意:给出n个数pi,和m个查询,每个查询给出l,r,a,b,让你求在区间l~r之间的pi的个数(A< ...
- 查询数组里有多少个数在[L,R]范围中(二分)
使用两次二分即可得到这个值 比如现在有一个vector<int> vec,里面存放的是有序数列. 我们现在希望找出范围在[L,R]之间的数有多少个. 则有cnt = upper_bound ...
随机推荐
- 一文懂SSM项目中的web.xml常用配置项
做web后端工程师,逃不过的web.xml,我们都知道配置这个文件是日常工作了,那么我们来把一些必须知道知识点梳理下. 我们把web项目启动的时候,首先加载的就是web.xml这个文件,只有这个文件所 ...
- 搭建第一个scrapy项目的常见问题
错误1:在执行 scrapy crawl spider名命令的时候 出现了ImportError:DLL load failed: %1不是有效的win32程序错误 这是因为pywin32的版本安装错 ...
- docker里面安装sqlserver2017
首先要注意,docker一般不做数据持久化容器.如果非要安装可以参考微软官方教程: https://docs.microsoft.com/zh-cn/sql/linux/quickstart-inst ...
- 关于反射中如何剔除实体类中serialVersionUID字段
Field[] fields = t.getClass().getDeclaredFields(); //这里为了剔除serialVersionUID Field[] tempArr = new Fi ...
- Laravel Vuejs 实战:开发知乎 (5)设计问题表
1.执行命令: php artisan make:model Models/Question -cm 2.设计问题的数据库迁移文件中的字段: <?php use Illuminate\Datab ...
- 【C语言】实参求值的顺序
#include<stdio.h> void fun(int x,int y) { printf("x=%d,y=%d",x,y); } int main() { in ...
- 题解 P1283 【平板涂色】
P1283 平板涂色 数据范围也太小了qwq..适合本萌新暴搜 小小的剪枝: 1.用pre预处理出每块矩形上方的矩形,pre[i][0]记录数目(如果数据范围再开大一点,直接1~n枚举判断可能超时qw ...
- win10下Ubuntu18.04安装的简单教程
win10下Ubuntu18.04安装的简单教程 操作系统:windows 软件:Vmware15. 一.下载 Ubuntu18.04镜像 Ubuntu18.04镜像下载 ...
- 利用单臂路由实现VLAN间的路由
实验4:利用单臂路由实现VLAN间的路由. 实验原理: 实验内容: 本实验模拟公司网络场景,路由器R1是公司的出口网关,员工PC通过接入层交换机(如S2和S3)接入公司网络,接入层交换机又通过汇聚交 ...
- 页面布局 Wrap 组件 和 RaisedButton按钮
一.RaisedButton 定义一个按钮 Flutter 中通过 RaisedButton 定义一个按钮.RaisedButton 里面有很多的参数,只讲简单的进行使用. return Raised ...