• UVa 10427


      题目大意:从1开始往后写数字,构成一个如下的字符串 123456789101112... 。求第n位的数字是多少。

      找规律,按数字的位数可以构建一个类似杨辉三角的东西,求出第n位是哪个数的第几位即可。

     1 #include <cstdio>
     2 #include <cmath>
     3 
     4 int main()
     5 {
     6 #ifdef LOCAL
     7     freopen("in", "r", stdin);
     8 #endif
     9     int table[9] = {0};
    10     int base = 9;
    11     for (int i = 1; i <= 8; i++)
    12     {
    13         table[i] = i * base;
    14         base *= 10;
    15     }
    16     for (int i = 1; i <= 8; i++)
    17         table[i] += table[i-1];
    18     int n;
    19     while (scanf("%d", &n) != EOF)
    20     {
    21         int k = 1;
    22         while (table[k] < n)   k++;
    23         double t1 = 1.0 * (n - table[k-1]) / k;
    24         int offset = (int)ceil(t1);  // n is offset-th num of k-th row
    25         int t2 = (n - table[k-1] - 1) % k + 1;  // the t2-th digit of the num    
    26         int t3 = 0;
    27         for (int i  = 1; i <= k-1; i++)
    28             t3 = t3*10 + 9;
    29         int m = t3 + offset;  // the compete num  
    30         for (int i = 0; i < k-t2; i++)   m /= 10;
    31         printf("%d
    ", m % 10);
    32     }
    33     return 0;
    34 }
    View Code
  • 相关阅读:
    python工具类 md5
    python 线程池, 进程池
    scrapydweb 安装部署
    python 协程
    jquery
    scrapyd 设置访问密码
    pat 乙级1033 旧键盘打字(20)
    1459 迷宫游戏(51NOD)
    python之禅
    Jzzhu and Cities ----CodeForces
  • 原文地址:https://www.cnblogs.com/xiaobaibuhei/p/3222125.html
Copyright © 2020-2023  润新知