繁体   English   中英

"序列操作 - Codewars Kata - 最佳性能"

[英]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>

如果只找到一个解决方案,则它已经有效。

我解决了,但是效率很低。 最初我是这样写的:

[原始方法]<\/strong>

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM