最快的方法是在给出位数时生成66666这样的数字

Nic*_*ick 2 python random numbers time-complexity

我有一个有趣的问题,我想生成一个大数字(~30000位数),但它必须是所有相同的数字,如 66666666666666.......

到目前为止,我已经做到了这一点:

def fillWithSixes(digits):
    result = 0
    for i in range(digits):
        result *= 10
        result += 6
    return result
Run Code Online (Sandbox Code Playgroud)

然而,这是非常低效的,并且想知道是否有更好的方法?cpp或java中的答案也可以.

编辑:

  1. 让我们不只是解决,666666.....我希望它对任何数字都是通用的.如何7777777777....44444........55555...

  2. 字符串操作更糟糕,从当前的复杂性O(n)增加到O(n^2).

wyt*_*ras 6

您可以使用公式666...666 = 6/9*(10**n-1),其中n是数字位数.

所以,在Python中,你会把它写成

n = int(input())
a = 6 * (10**n - 1) // 9
print(a)
Run Code Online (Sandbox Code Playgroud)

  • @pjs`6*(10**n - 1)/ 9` (2认同)