1e9+7和10**9+7竟有此差别?!(求助帖)

loveforever_444 2025-08-19 11:01:30

练习一个快速幂算法题目的时候发现了这个很有意思的问题,但是我也不知道为什么。代码如下

#快速幂运算
MOD = 10 ** 9 + 7
pow = 10000
def fun(base , power , mod):
    result = 1
    while power > 0:
        if power % 2 != 0:
            result = (result * base) % mod
        power = power // 2
        base = (base * base) % mod
    return result
a = fun(9 , pow , MOD)
b = fun(8 , pow , MOD)
c = fun(7 , pow , MOD)
result = (a - 2 * b + c) % MOD
if result < 0:
    result += MOD
print(result)


要计算的就是9**10000-2*8**10000+7**10000,如果MOD取10**9+7的话,是正确答案157509472。

 


但是如果改为1e9+7的话,结果就变为了793962873.0了。

 


这是为什么呢?我觉得很神奇,因为这两个理论上是等价的,只是数据类型不同,求解!

...全文
38 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

9,068

社区成员

发帖
与我相关
我的任务
社区描述
人生苦短,我用python
社区管理员
  • Python 学习者
  • 嗨学编程
  • 松鼠爱吃饼干
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎来到Python学习者们的社区,

 

本社区分享你需要的文章、问题解答、技术互助、学习资源、面试系列等等

 

欢迎你的加入,祝你学有所成~

试试用AI创作助手写篇文章吧