题目:
分析:
1—9
2—902
3—9003
先定他是几位数。然后就可以确定他在哪个数里面。
代码:
int main()
{
int n=17;
long long A[11];
//表示i位数一共有多少位,严格的 i位数,前面不能是0
//int 的最大值 2147483647
for(int i=1;i<11;i++)
{
A[i]=9*pow(10,i-1)*i;
}
//定位数。
int c=0;
int all=0;
for(int i=1;;i++)
{
all=all+A[i];
c++;
if(all==n) return 9;
if(all>n) break;
}
if(c==1) return n;
all=all-A[c];
n=n-all;
cout<<"c:"<<c<<endl;
cout<<"n:"<<n<<endl;
int t1=(n-1)/c;
t1=t1+pow(10,c-1);
cout<<"t1: "<<t1<<endl;
int t2=n%c;
if(t2==0) {
return t1%10;
}
cout<<"t2: "<<t2<<endl;
int t3=c-t2;
cout<<"t3: "<<t3<<endl;
cout<<(int)(t1/pow(10,t3))%10;
return (int)(t1/pow(10,t3))%10;
}