UVA10706数字连排,求第i个位置的数字,二分
来源:互联网 发布:crt连接linux服务器 编辑:程序博客网 时间:2024/05/20 10:23
一个数组记录,是s1s2....sk的数字个数,然后二分,转化为字符串,即可求出第i个位置的数字,具体的看代码:
#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>#include<string>#include<set>#include<map>#include<iostream>#include<algorithm>#include<vector>#include<cctype>#include<queue>#define LL long longusing namespace std;const int maxn=1e7+10;const double eps=1e-8;const int Max=2147483647;LL s[maxn];LL vi;int i;void init(){ int tt=1; int tem=0; s[0]=0; int c=10; for(i=1;s[i-1]<=Max;i++) { if(i==c) { tt++; c*=10; } tem=tem+tt; s[i]=s[i-1]+tem; }}int main(){ int t; cin>>t; init(); i--; while(t--) { scanf("%lld",&vi); LL l=0,r=i; while(l<r) { LL m=l+(r-l)/2; if(s[m]>=vi) r=m; else l=m+1; } if(vi==s[l]) { cout<<l%10<<endl; continue; } l--; vi-=s[l]; string ss=""; char tem[10]; for(int j=1;j<=i+1;j++) { sprintf(tem,"%d",j); ss=ss+tem; if(ss.length()>=vi) break; } cout<<ss[vi-1]<<endl; } return 0;}
0 0
- UVA10706数字连排,求第i个位置的数字,二分
- 编程珠玑第9章二分搜索(有重复数字)中查找某数出现的第一个位置
- 求最小的k个数字和求第k小的数字
- 求Fibonacci数列的第N个数字
- 螺旋矩阵求指定位置的数字
- 简单搜索求输入数字的位置
- 排序-快排、二分及旋转数组的最小数字
- (hdu step 4.1.5)find the nth digit(求S串中的第n个位置上是什么数字)
- 求任意10个数字中最大的一个数字
- 面试100题:18.求从圈中不停的删除第m个数字之后最后剩下的数字
- 面试100题:18.求从圈中不停的删除第m个数字之后最后剩下的数字
- 18 约瑟夫环问题 n个数字,每次从这个圆圈中删除第m个数字,求剩下的最后一个数字
- 产生fibonacci数列的第i个数字(递归实现,非递归实现)
- P53 第35题 编程求给定的4个数字全排列
- poj 1019 求一个1到n的序列中,第k个数字是多少
- 分块+二分维护,求区间内数字出现的次数
- 二分查找法找数字位置
- 获取一个字符串里的第一个数字的位置
- GDI+ 如何将图片绘制成圆形的图片
- c++第一次实验:循环3
- View的事件体系续
- CGContextClearRect with circle
- Windows环境下编译OpenCV3.1和OpenCV_contrib for vs2008
- UVA10706数字连排,求第i个位置的数字,二分
- EV SSL证书,防范钓鱼网站的神兵利器
- 给未来程序员的15个顶级职业建议
- C++ 一次实验
- VS2012打包部署教程
- Android Color Generator
- Http协议的理解
- WPF-WPF布局系统
- 【鸽笼原理】HDU1205吃糖果