HDU1597二分查找
来源:互联网 发布:stc最新单片机 编辑:程序博客网 时间:2024/04/29 10:55
HDU1597
首先这道题的思路是二分查找
我们先开一个数组sto,sto[i]用来记录Si之前(包括Si)的总共的数字的个数,一个for循环即可实现
然后我们根据输入的n在sto[i]区间的对比情况就可以判断出n所在对应的S的下标
然后剩下都就是取余运算就可以了
二分法思想简单,但是判断辩解是十分困难的,参考了网上大神们的建议,我总结了一下相对好理解的边界判定情况
1.n>sto[mid]&&n<=sto[mid+1]
当n满足上面式子的时候,n刚好在sto[mid]之后,sto[mid+1]之前,所以n前有mid个S串
2.n<=sto[mid]&&n>sto[mid-1]
当n满足上面式子的时候,n刚好在sto[mid-1]之前,sto[mid]之后,所以n前有mid-1个串
3.身下的边界很好理解,主要是上面两个
附上AC代码
#include"iostream"#include"cstdio"using namespace std;int sto[80000];int n;int w;void mybin(int left,int right){int mid=(left+right)/2;if(n>sto[mid]&&n<=sto[mid+1]) {w=mid;return ;}else{if(n<=sto[mid]&&n>sto[mid-1]) {w=mid-1;return ;}else {if(n<=sto[mid-1]) mybin(left,mid-1);else mybin(mid+1,right);}}}int main(){int t;for(int i=1;i<=65536;i++){sto[i]=sto[i-1]+i;}cin>>t;while(t--){cin>>n;mybin(1,65536);int t=n-sto[w];t=t%9;if(t==0) cout<<9<<endl;else cout<<t<<endl; }return 0;}
0 0
- hdu1597(二分查找)
- HDU1597二分查找
- hdu1597 find the nth digit(二分查找)
- hdu1597 简单二分
- HDU1597【二分瞎搞】
- HDU1597(二分)
- HDU1597
- hdu1597
- hdu1597
- HDU1597
- hdu1597
- 09-04 HDU_Steps4.1 二分三分 HDU2199 HDU2899 HDU1967 HDU2141 HDU2298 HDU1597 HDU2438 HDU3400
- hdu1597(规律)
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 嵌入式Linux之我行——ARM MMU工作原理剖析
- 三层之间相互调用的设置
- [iPhone高级] 基于XMPP的IOS聊天客户端程序(IOS端一)
- 笔记本电脑越来越不耐用了,怎么知道电池是否有问题?
- 将一个十进制整数转换为二进制字符串
- HDU1597二分查找
- 从头学android_电话拨号器
- 对象(四继承)
- 在IOS中NSRange类的详细介绍
- alibaba druid学习资源
- 关于Mybatis使用的一些问题汇总(持续更新)
- 由于mysql隐式类型转换导致的索引失效的问题
- FrameLayout布局
- Brightest Immaculate Teresa(简单题)(北理16校赛)