没什么奇淫异术,直接暴力枚举……
也不能说是简单的枚举……
枚举c, 根据c的大小,枚举a,然后就可以算出b^2。判断 if b^2 == math.ceil(math.sqrt(b^2))**2
然后把f[a+b+c]的值加一就好了~
求出数组f中value最大的index就是我们要求的答案了~
import math
def main():
f = [0 for i in range(1001)]
for i in range(1, 1000):
c = i*i
for a in range(1, i):
b = c - a*a
if b<0:
break
sqrt_b = math.ceil(math.sqrt(b))
if i+a+sqrt_b>1000:
break
if b == sqrt_b**2:
f[i+a+sqrt_b] += 1
max = 0
x = 0
for i in range(1001):
if f[i]>=max:
max = f[i]
x = i
print(max, x)
if __name__ == '__main__':
main()