写数字
Time Limit: 2000/1000ms (Java/Others)
Problem Description:
把由1开始的自然数依次写下来:123456789101112……,重新分组,按四个数字为一组:1234,5678,9101,1121,3141,5161,…0348…,问第n个数是几?
Input:
输入包含多组测试数据,每组数据包含一个整数n(1<=n<=10000);
Output:
对于每组数据,输出第n个数(去除前导0)
Sample Input:
1
Sample Output:
1234
解题思路:简单计算一下可知
AC代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=5e+5; 4 char buf[maxn];int n,m,r,k=0; 5 int main(){ 6 for(int i=1;i<=11000;++i) 7 k+=sprintf(buf+k,"%d",i); 8 buf[k-1]='\n'; 9 while(~scanf("%d",&n)){ 10 r=0; 11 for(int i=(m=4*(n-1));i<m+4;++i)r=r*10+buf[i]-'0'; 12 printf("%d\n",r); 13 } 14 return 0; 15 }