LeetCode Algorithm 1925. 统计平方和三元组的数目

Posted Alex_996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Algorithm 1925. 统计平方和三元组的数目相关的知识,希望对你有一定的参考价值。

1925. 统计平方和三元组的数目

Ideas

三层循环暴力肯定超时,需要优化。

a, b, c的关系需要满足 a 2 + b 2 = c 2 a^2+b^2=c^2 a2+b2=c2,那么 c = a 2 + b 2 c = \\sqrta^2+b^2 c=a2+b2 ,需要验证c为整数并且c小于n。

没有限定a和b的大小关系,但是a, b < c,既然 a 2 + b 2 = c 2 a^2+b^2=c^2 a2+b2=c2,那么 b 2 + a 2 = c 2 b^2+a^2=c^2 b2+a2=c2,所以可以让a<b,然后每找到一个满足条件的三元组就算为两个。

Code

Python

class Solution:
    def countTriples(self, n: int) -> int:
        ans = 0
        for a in range(1, n + 1):
            for b in range(a + 1, n + 1):
                c = sqrt(a ** 2 + b ** 2)
                if c % 1 == 0 and c < n + 1:
                    ans += 2
        return ans

以上是关于LeetCode Algorithm 1925. 统计平方和三元组的数目的主要内容,如果未能解决你的问题,请参考以下文章

POJ 1925 Spiderman(dp)

1925: [Sdoi2010]地精部落

bzoj1925地精部落——数学

LeetCode Algorithm

[BZOJ 1925][Sdoi2010]地精部落

LeetCode Algorithm 414. 第三大的数