10706 - Number Sequence
来源:互联网 发布:网络监控摄像头 编辑:程序博客网 时间:2024/06/01 07:37
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cctype>
#include <cstdlib>
#include <cmath>
#include <stack>
#define M 31271
using namespace std;
long long a[M];
long long s[M];
int lower_bsearch(int value,long long *A,int x,int y) //x初始值为 0 y为 len - 1 value为要查找的值,A查找的数组 (升序排列)
{
int mid,max = y;
while(x < y){
mid = x + (y-x)/2;
if(A[mid] >= value)
y = mid;
else x = mid + 1;
}
return x; // 返回 第一个大于等于value的值的下标
}
void List()
{
a[0] = 0;s[0] = 0;
a[1] = 1;
s[1] = 1;
for(int i = 2;i < M;i++)
{
a[i] = a[i-1] + (long long)(log10((double)i)) + 1;
s[i] = s[i-1] + a[i];
}
}
int Find(int n)
{
int loc;
loc = lower_bsearch(n,s,0,M-1); //查找总和在哪个区间段
int dis = n - s[loc-1];
int i = lower_bsearch(dis,a,0,M-1);//查找位于哪个数
int d = dis - a[i-1];
char ss[100];
sprintf(ss,"%d",i);
return (ss[d-1]-'0');
}
int main()
{
//freopen("in.in","r",stdin);
int T,n;
cin>>T;
List();
while(T--)
{
cin>>n;
cout<<Find(n)<<endl;
}
return 0;
}
- 10706 - Number Sequence
- 10706 - Number Sequence
- UVa 10706 - Number Sequence
- uva 10706 - Number Sequence
- UVA 10706 - Number Sequence
- UVa 10706 - Number Sequence
- 10706 - Number Sequence
- UVa 10706 Number Sequence
- UVA 10706 - Number Sequence
- UVa 10706 - Number Sequence
- UVa:10706 Number Sequence
- uva 10706 Number Sequence
- uva 10706 Number Sequence
- uva 10706 Number Sequence
- UVA - 10706 Number Sequence
- UVA - 10706 Number Sequence
- UVA - 10706 Number Sequence
- UVA 10706 Number Sequence
- ViewData与TempData的区别
- WOW CTM的中国运营简况一两句
- BlckBerry Enterprise Server免费下载,免费申请试用版license:
- 学会忍耐
- 日本富士通公司宣布支持Windows Azure的全新中间件产品全球可用
- 10706 - Number Sequence
- 关于Win7系统中软件安装目录下ini配置文件的读写问题
- C++的辅助工具介绍
- Java网络编程(13):使用Socket类接收和发送数据
- ActiveX插件的Z-Index属性无效问题解决
- Windows 7命令提示符小技巧
- ORA-01555错误
- 常用正则表达式
- IsPostBack深入探讨