数学题。
11212312341234512345612345671234567812345678912345678910123456789101112345678910
求这个数列的第n位上的数是多少。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
long long a[32000],s[32000],up;
int numlen(long long n)
{
return (int)log10((double)n)+1;
}
int init()
{
int i;
a[0]=0;
s[0]=0;
for (i=1; i<31270; i++)
{
a[i]=a[i-1]+numlen(i);
s[i]=a[i]+s[i-1];
if (s[i] < 0)
{
up=i;
break;
}
}
}
int main()
{
long long n,i,j,T,len,tn;
char str[1000000];
init();
cin>>T;
while (T--)
{
cin>>n;
i=1;
while (s[i] < n) i++;
n-=s[i-1];
len=0;
tn=n;
for (i=1; len<tn; i++)
{
n-=numlen(i);
len+=numlen(i);
}
n+=numlen(i);
sprintf(str,"%d",i-1);
cout<<str[n-1]<<endl;
}
}