[英]Operations on Sequences - Codewars Kata - Best Performance
这是一个代码战问题<\/a>。 给出的想法是
arr = [x(1), x(2), x(3), x(4), ..., x(i), x(i+1), ..., x(m), x(m+1)]<\/code>其中所有
x(i)<\/code>都是正整数。
(这个数组的长度(
len(arr)<\/code> )将是 4 的正倍数)
并让
P = (x(1) ** 2 + x(2) ** 2) * (x(3) ** 2 + x(4) ** 2) * ... * (x(m) ** 2 + x(m+1) ** 2)<\/code>
找到
A<\/code>和
B<\/code>使得
A**2 + B**2 == P<\/code>
from math import sqrt, ceil
def solve(arr):
if len(arr) % 2 != 0: return []
n = len(arr)
P = 1
i = 0
while i < n:
P *= (arr[i]**2 + arr[i + 1]**2)
i += 2
m = ceil(sqrt(P))
for A in range(1, m):
B = sqrt(P - A**2)
if B == int(B):
return [A, int(B)]
return []
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.