题目大意

考虑自然数构成的序列 $a$:$01234567891011\dots$,序列下标从 $0$ 开始,即 $a_0 =0, a_1 = 1$ 。
求 $a_n$($0\le n\le 10^{18}$)。

解法

设 $a_n$ 所在的数字为 $x(n)$ 。
首先不难求出 $x(n)$ 的位数, 设其为 $k$ 。
从而可以求出 $x(n)$ 是第几个 $k$ 位数,这样也就求出了 $x(n)$ 。
设 $x(n)$ 是第 $i$($i\ge 1$)个 $k$ 位数,则有
$$ i = \left\lceil \frac{n+1 - s_{k-1}}{k}\right\rceil $$
$\lceil a/b \rceil$($a\ge 0, b>0$)用代码可表示为(a + b - 1) / b
其中,$s_{k-1}$ 表示「位数不超过 $k-1$ 的自然数」的位数之和。
进一步,可以求出 $a_n$ 在 $x(n)$ 第几位。
比较方便的办法是,把个位作为第 0 位,十位作为第 1 位,百位作为第 2 位,以此类推;
这样,x 的第 j 位可以表示为 x / pow(10, j) % 10
设 $a_n$ 在 $x(n)$ 的第 $j$ 位,则有
$$ j = i k - (n +1 - s_{k-1}) $$

最新文章

  1. ASP.NET(C#) Web Api通过文件流下载文件到本地实例
  2. swprintf %s %ws %S 的区别
  3. 使用阿里Docker镜像加速器加速
  4. 【GOF23设计模式】组合模式
  5. 登陆peoplesoft的时候显示信息
  6. mac with windows dirver
  7. Cocos2dx 中的CCCallFunc,CCCallFuncN,CCCallFuncND,CCCallFuncO比较
  8. (摘录)26个ASP.NET常用性能优化方法
  9. Linux下的强大工具之一sed(转),Shell必备
  10. XMPP(二)-基于asmack+openfire的安卓客户端(仿QQ)的介绍以及个人心得
  11. c/c++ 网络编程 使用getaddrinfo的单纯UDP 通信
  12. linux 常用命令 和 nginx(反响代理、负载均衡)安装和配置
  13. 没有与这些操作数匹配的 "<<" 运算符 操作数类型为: std::ostream << std::string
  14. python之字符串及其方法---整理集
  15. vue 坑 checked 和v-model共用
  16. GroupBy分组的运用和linq左连接
  17. React-异步组件及withRouter路由方法的使用
  18. N! (数组)
  19. Servlet笔记8--乱码解决方案
  20. 移动网络应用开发中,使用 HTTP 协议比起使用 socket 实现基于 TCP 的自定义协议有哪些优势?

热门文章

  1. 日常-acm-子序列的和
  2. 剑指offer55 字符流中第一个不重复的字符(最典型错误)
  3. Word2vec资料
  4. 01_13_Struts_默认Action
  5. Spring框架配置文件中有两个相同名字的bean,最后会覆盖掉一个bean
  6. PHP计算今天、昨天、本周、本月、上月开始时间和结束时间
  7. oop中 限制文件类型和大小
  8. 使用Github第二节
  9. python模块之pickle
  10. Leetcode(204) Count Primes