gpt4 book ai didi

c++ - 计算大数的模数

转载 作者:太空宇宙 更新时间:2023-11-04 02:04:54 24 4
gpt4 key购买 nike

您好,我需要计算 (2^n + (-1)^n) % 10000007其中 1 < n < 10^9

我应该如何用 C++ 为它编写程序?

我知道这个模组属性(a + b)%n = (a%n + b%n)%n 但这对我没有帮助。

最佳答案

给定

(a + b)%m = (a%m + b%m)%m

然后,将 a 和 b 都替换为 2 的相同次方,得到递归:

2k+1%m = (2k%m + 2k%m)%m

您可能已经想到您的公式可以让您将问题分解为:

(2n + (-1)n)%P = (2n%P + (-1)n%P)%P

然后,请注意 (-1)k 要么是 1 要么是 -1,您应该能够在 O(n) 时间内计算出您的问题。

关于c++ - 计算大数的模数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21958111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com