用 Python 编写程序来找出给定方程的值
pythonserver side programmingprogramming更新于 2026/1/26 13:32:17
假设我们给出了五个整数 a、b、c、d、n。我们必须找出 ((ab)(cd)) mod n。输出值是一个整数。
因此,如果输入为 a = 2、b = 3、c = 2、d = 4、n = 10,则输出将为 6。
2^3 = 8 2^4 = 16 8^16 = 281474976710656 281474976710656 mod 10 = 6
为了解决这个问题,我们将遵循以下步骤 −
- 定义一个函数 helper() 。这将需要 n
- p := n
- i := 2
- 当 i * i <= n 时,执行
- 如果 n mod i 与 0 相同,则
- p := p - (p / i) 的下限值
- 当 n mod i 与 0 相同时,执行
- n := (n / i) 的下限值
- 如果 i 不等于 2,则
- i := i + 2
- 否则,
- i := i + 1
- 如果 n mod i 与 0 相同,则
- 如果 n > 1,则
- p := p - (p / n) 的底值
- 返回 p
- 如果 b 等于 0 或 (c 等于 0 且 d 不等于 0),则
- 返回 (a ^ 0) mod n
- 如果 c 等于 1 或 d 等于 0,则
- 返回 (a ^ b) mod n
- 如果 a 等于 0 或 a mod n 等于 0,则
- 返回 0
- 如果 d 等于 1,则
- 返回 (a ^ b * c) mod n
- p := helper(n)
- e := (c ^ d) mod p + p
- 返回 (((a ^ b) mod n) ^ e) mod n
示例
让我们看看下面的实现以便更好地理解 −
def helper(n): p = n i = 2 while i * i <= n: if n % i == 0: p -= p // i while n % i == 0: n = n // i if i != 2: i += 2 else: i += 1 if n > 1: p -= p // n return p def solve(a, b, c, d, n): if b == 0 or (c == 0 and d != 0): return pow(a, 0, n) if c == 1 or d == 0: return pow(a, b, n) if a == 0 or a % n == 0: return 0 if d == 1: return pow(a, b * c, n) p = helper(n) e = pow(c, d, p) + p return pow(pow(a, b, n), e, n) print(solve(2, 3, 2, 4, 10))
输入
2, 3, 2, 4, 10
输出
6
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

