还有一种O(1)的算法,有待学习,先贴暴力点的 ///暴力求解,试解出i所在的范围即在1-x内,然后依次求解每一个数 #include<stdio.h> #include<string.h> char s[7]; long long n,t; int main() { int cas; scanf("%d",&cas); while(cas--) { int i,j,k,ok=0,len; long long last=0;//有last可以加快执行 t=0; scanf("%d",&n); t=0; for(i=1;;i++) { sprintf(s,"%d",i); len=strlen(s); last+=len; if(t+last<n) t+=last; else for(j=1;j<=i;j++) { sprintf(s,"%d",j); len=strlen(s); if(t+len<n) t+=len; else { printf("%c/n",s[n-t-1]); ok=1; } if(ok)break; } if(ok)break; } } return 0; }