如何在像1491625这样的数字中找到第n位?

8 algorithm math

让我们连接以1开头的数字的平方.那么,这个字符串中的第n个数字是多少?

例如,第10位是4.

1 4 9 16 25 36 49 64 81
Run Code Online (Sandbox Code Playgroud)

这只是一个普通的问题,是我的普通思想.今晚如何才能解决这个问题呢?没有循环的任何算法?

Oli*_*rth 11

您可以通过取10次幂的平方根来计算此序列中有多少1位,2位,3位等数字.这将允许您确定第n个数字所在的数字.从那里,它应该是非常微不足道的.

这应该是O(log n)复杂度.

  • +1进一步优化不是每次都计算平方根,因为sqrt(10 ^ n)= sqrt(10 ^(n-1))*sqrt(10),即每次幂10的乘法. (2认同)