- #include<iostream>
- #include<cstdio>
- #include<cmath>
- #define max 31270
- using namespace std;
- unsigned int a[max];
- unsigned int s[max];
- void start()
- {
- int i,j;
- a[1]=1;
- s[1]=1;
- for(i=2; i<31270; i++) //打表记录总的位数
- {
- a[i]=a[i-1]+(int)log10((double)i)+1;
- s[i]=s[i-1]+a[i];
- }
- }
- int res(int n)//预处理,不断缩小范围
- {
- int i=1,j=1;
- int m=0;
- int len=0;
- for(i=1; i<31270; i++)
- {
- if(s[i]>=n)
- break;
- }
- int pos=n-s[i-1];
- for(j=1; len<pos; j++)
- {
- len+=(int)log10((double)j)+1;
- }
- return ((j-1)/(int)pow(10.0,len-pos))%10;
- }
- int main()
- {
- int t;
- int test;
- cin>>t;
- start();
- while(t--)
- {
- cin>>test;
- cout<<res(test)<<endl;
- }
- return 0;
- }
poj Number Sequence
最新推荐文章于 2020-07-07 21:38:00 发布