题目描述
解题思路
能暴力的就暴力,直接上三层循环判断。但是为了超时我们要从题目细节挖掘循环范围,比如题目都说由平方和构成说明你要找的数一定在开方内,而且abcd要升序排列,当找到了a,你b的范围就至少要从a开始
代码
def f(n):
rangea=int(n**0.5)+1
for a in range(rangea):
rangeb=int((n-a*a)**0.5)+1
for b in range(a,rangeb):
rangec=int((n-a*a-b*b)**0.5)+1
for c in range(b,rangec):
d=int((n-a*a-b*b-c*c)**0.5)
if a*a+b*b+c*c+d*d==n:
print(a,b,c,d)
return
n=int(input())
f(n)