You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中对超大数值列表元素取Modulo 10^9+7?

正确实现每个元素模1e9+7的方法

你提到的n%m=p方案不对,是因为它只对最后一个元素n取模,而你需要的是列表里的每一个元素都单独对10^9+7取模,这才是正确的核心思路。

核心逻辑

不管原列表是已存在(但n极大时不建议全存)还是需要动态生成,核心操作都是对每个元素执行元素值 % MOD,其中MOD = 10**9+7。

具体实现示例(以Python为例)

  1. 若原列表已存在(注意:n极大时全存会占用大量内存,不推荐):
MOD = 10**9 + 7
original_list = [1, 3, 5, 6, ..., n]  # 假设列表已存在
new_list = [x % MOD for x in original_list]
  1. 若n极大,建议动态生成元素并直接取模(避免内存溢出):
MOD = 10**9 + 7
new_list = []
# 按照你给出的列表规则:先1、3、5,再从6连续到n
# 处理前三个元素
for x in [1, 3, 5]:
    new_list.append(x % MOD)
# 处理6到n的连续元素
for x in range(6, n + 1):
    new_list.append(x % MOD)

关键说明

  • 当元素值小于10**9+7时,取模结果就是元素本身,不会改变数值;只有当元素值大于等于模数时,才会得到余数,完全符合需求。
  • 面对极大的n,一定要用边生成边处理的方式,不要一次性生成整个原列表,否则会耗尽系统内存。

内容的提问来源于stack exchange,提问作者Landy RAKOTOARISON

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 03:40:20