在 Python 中应用俄罗斯农民乘法的程序
假设我们有四个整数p、q、r和k。我们将使用一种称为俄罗斯农民乘法的方法并确定(p+qi)^r=r+si的值我们必须返回rmodk和smodk的值。
所以,如果输入像p=3,q=0,r=8,k=10000,那么输出将是(6561,0)3^8=6561,因为q=0rmodk=6561的值.
示例
让我们看看以下实现以获得更好的理解-
def solve(p, q, r, k):
if r == 0:
return 1
elif r == 1:
return (p % k, q % k)
elif r % 2 == 0:
return solve((p*p - q*q) % k, 2*p*q % k, r/2, k)
else:
(pr, qr) = solve(p, q, r-1, k)
return ((p * pr - q * qr) % k, (p * qr + q * pr) % k)
print(solve(3, 0, 8, 10000))输入
3, 0, 8, 10000输出结果
(6561, 0)
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下