牛客网 1222 01
来源:互联网 发布:ubuntu命令行升级系统 编辑:程序博客网 时间:2024/06/06 10:58
https://www.nowcoder.com/acm/contest/37/A
一般枚举会超时!
这是我写的
1 4 9 16 25 36 49
值恰好是边界是 直接开方相减 如果不睡 因为开方直接向下取整 所以start++ 在相减
#include<stdio.>#include<math.h>int main(){ int a,b,t; double zhena; int sum; int jiaa,start,end; int c; scanf("%d",&c); while(c--){scanf("%d%d",&a,&b);if(a>b){t=a;a=b;b=t;}sum=0;zhena=sqrt(a);start=jiaa=sqrt(a); end=sqrt(b);if(zhena!=jiaa){start++;}sum=end-start;printf("%d\n",sum+1); }return 0;}下面是q神的代码
#include<bits/stdc++.h>using namespace std;vector<int> res;int main(){ for(int i=0;i*i<=1000000000;i++) res.push_back(i*i); int T; scanf("%d",&T); while(T--) { int l,r; scanf("%d%d",&l,&r); int ans=upper_bound(res.begin(),res.end(),r)-lower_bound(res.begin(),res.end(),l); printf("%d\n",ans); } return 0;}
关于
lower_bound(r[x].begin(),r[x].end(),l)upper_bound(r[x].begin(),r[x].end(),R)
lower_bound与upper_bound的返回值是不同的lower_bound返回第一个大于等于x的数的地址例如数组 1 1 1 3 5而需要找的那个数是2,怎么返回呢,就是返回那个第一个大于 2 的数的地址,就是返回3的位置,那么再有一组数据就是5个数1 1 1 3 5,还是需要找寻2,那么该返回什么呢?就是第一个3的地址.upper_bound返回第一个大于x的数的地址也就是说如果在5个数 1 , 1, 2 , 2 , 4 ,里边寻找3,那么就会返回4的地址
http://www.cnblogs.com/bbqub/p/7774756.html
阅读全文
0 0
- 牛客网 1222 01
- HLJU 1222: 01串plus (模拟)
- 1222
- 1222
- 1222
- 1222
- 1222
- 高斯消元法解01异或方程组(附poj 1222题解)
- 牛客网
- 牛客网
- 牛客网
- 牛客网-剑指offer-01-二维数组中的查找
- ACM 1222
- hdu 1222
- poj 1222
- HDOJ 1222
- hdu 1222
- hdu 1222
- 从整数数组中找出唯二奇数次的数字 Python版
- 单链表 c实现 详细注释
- 常用Linux命令
- npm包管理工具的安装及配置使用
- 116. Populating Next Right Pointers in Each Node
- 牛客网 1222 01
- 15算法课程 303. Range Sum Query
- if条件语句 加括号与不加 括号 的区别
- 如何改变Redis用不好的误区
- 24. Swap Nodes in Pairs
- 2.四个核心概念及使用
- POI+JFreeChart生成报表图片在Excel中的位置
- 构造一个特殊栈,实现方法getmin,返回栈中的最小元素 Python版
- 15算法课程 326. Power of Three