擅长:python、mysql、java
<p>这是一个利用模式的函数,其中相邻的10次方之间的“有效”数是9的幂次方。这使我们可以跳过很多数字。在</p>
<pre><code>def get_starting_point(k):
i = 0
while True:
power = (i + 1) // 2
start = 10 ** i
subtract = 9 ** power
if k >= subtract:
k -= subtract
else:
break
i += 1
return k, start
</code></pre>
<p>我把这个和你定义的方法结合起来。如果我们对第45个号码感兴趣,
这说明搜索从1000开始,我们只需要找到1000之后的第26个“有效”数字。保证不到1万。当然,这种限制在规模上越来越差,您可能希望使用本文中其他社区成员建议的技术。在</p>
^{pr2}$
<p>输出:</p>
<pre><code>new_k: 26
start at: 1000
3827
</code></pre>
<p>第45个号码好像是3827。在</p>