python - 给定位数时生成 66666 等数字的最快方法

标签 python random numbers time-complexity

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

到目前为止,我是通过以下方式完成的:

def fillWithSixes(digits):
    result = 0
    for i in range(digits):
        result *= 10
        result += 6
    return result

但是这样效率很低,请问有没有更好的办法?用 cpp 或 java 回答也可以。

编辑:

  1. 我们不只是解决 666666..... 我希望它对任何数字都是通用的。 7777777777....44444......55555... 怎么样?

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

最佳答案

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

因此,在 Python 中,您可以将其写为

n = int(input())
a = 6 * (10**n - 1) // 9
print(a)

关于python - 给定位数时生成 66666 等数字的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33744078/

相关文章:

javascript - 如何使用 Array.sort() 正确排序数字?

javascript - Math.max() - 如果更多元素是最大值?

java - 如何显示整个 double 值?

python - 从数据框中的数组制作散点图

python - 生成随机且唯一的索引,其范围为 n 个组合

css - 我需要使用 "Math.floor(Math.random()"从我的 css 页面中随机选择一个样式。

c++ - 使用 Boost::Serialization 序列化带有 std::mt19937_64 成员的类

python - 为什么我不能在自定义管理器中使用其他模型对象?

python 3 不确定行为

python - appengine远程api无法登录