用 Python 编写的查找连续二进制数连接的程序
pythonserver side programmingprogramming更新于 2025/12/2 2:52:17
假设我们有一个数字 n,我们必须通过按顺序逐一连接 1 到 n 的二进制表示来找到二进制字符串的十进制值,如果答案太大,则返回答案模 10^9 + 7。
因此,如果输入为 n = 4,则输出将为 220,因为通过连接 1 到 4 的二进制表示将是"1"+"10"+"11"+"100" = 110111000,这是 220 的二进制表示。
为了解决这个问题,我们将遵循以下步骤 −
- ans := 1
- m := 10^9+7
- 对于 2 到 n 范围内的 i,执行
- ans := 移位 ans(i 的位长度)次数
- ans := (ans+i) mod m
- 返回 ans
示例
让我们看看下面的实现以便更好地理解 −
def solve(n): ans = 1 m = (10**9+7) for i in range(2,n+1): ans = ans<<i.bit_length() ans = (ans+i) % m return ans n = 4 print(solve(n))
输入
4
输出
220
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

