POJ1019-Number Sequence-数数。。
1
12
123
1234
把数按照这样的形式拍成一排,给一个序号求出那个序号对应的数。
当出现两位数。三位数时,要麻烦的处理一下。
#include <cstdio> #include <algorithm> #include <cmath> using namespace std; int T,N,ans; int getbit(int x) { int rtn = 0; while(x) { x/=10; rtn++; } return rtn; } int main() { scanf("%d",&T); while(T--) { scanf("%d",&N); int cur = 1,cnt = 1;; while(true) { if(N <= cur) break; N -= cur; cnt++; cur += getbit(cnt); } //printf("N=%d cur=%d cnt=%d\n",N,cur,cnt); cur = 1,cnt = 1; while(true) { if(N <= cur) break; N -= cur; cnt++; cur = getbit(cnt); } //printf("N=%d cur=%d cnt=%d\n",N,cur,cnt); if(cur == N) ans = cnt%10; else ans = (int)(cnt/pow(10,cur-N)) % 10; printf("%d\n",ans); } }