码迷,mamicode.com
首页 > 其他好文 > 详细

cf 1216e1

时间:2019-09-28 00:58:35      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:ems   数字   mes   lse   cli   name   def   names   problem   

https://codeforc.es/problemset/problem/1216/E1

 

求1121231234...序列里面第k个数字,k不超过10亿。 

我们只要预处理一个sum数组,然后每次二分一下(其实不二分也可以) 

 

技术图片
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int const inf = 1e9;
 4 int q, sum[100000], pw[10];
 5 int num(int x)
 6 {
 7     int res = 0;
 8     while (x)
 9     {
10         x /= 10;
11         res++;
12     }
13     return res;
14 }
15 int query(int t, int x)
16 {
17     while (1)
18     {
19         x--;
20         if (x == 0)
21             return t % 10;
22         t /= 10;
23     }
24 }
25 int main()
26 {
27     scanf("%d", &q);
28     int s = 0, n;
29     pw[0] = 1;
30     for (int i = 1; i < 10; i++)
31         pw[i] = pw[i - 1] * 10;
32     for (int i = 1;; i++)
33     {
34         s += num(i);
35         sum[i] = sum[i - 1] + s;
36         if (sum[i] >= inf)
37         {
38             n = i;
39             break;
40         }
41     }
42     while (q--)
43     {
44         int x;
45         scanf("%d", &x);
46         int l = 1, r = n;
47         while (l < r)
48         {
49             int mid = (l + r) / 2;
50             if (sum[mid] >= x)
51                 r = mid;
52             else
53                 l = mid + 1;
54         }
55         x -= sum[r - 1];
56         for (int i = 1; i < 10; i++)
57         {
58             int tmp = (pw[i] - pw[i - 1]) * i;
59             if (x > tmp)
60                 x -= tmp;
61             else
62             {
63                 int t = pw[i - 1] + (x - 1) / i;
64                 x = (x - 1) % i + 1;
65                 printf("%d\n", query(t, i - x + 1));
66                 break;
67             }
68         }
69     }
70     return 0;
71 }
View Code

 

cf 1216e1

标签:ems   数字   mes   lse   cli   name   def   names   problem   

原文地址:https://www.cnblogs.com/ZJXXCN/p/11600872.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!