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