ACM_写数字

写数字

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 }

猜你喜欢

转载自www.cnblogs.com/acgoto/p/9203097.html