一个账号 发表于 2020-3-19 18:44
不要使用暴力解法
qiuyouzhi 发表于 2020-3-19 17:57
改用BIF
用 math.pow() 不是更好吗?
楼主来测一下我的有没有问题,我的好像大数据都能出结果,就不知道对不对了
本帖最后由 永恒的蓝色梦想 于 2020-3-19 19:30 编辑
友情提示:
开平方请使用math.sqrt(num)
平方不要用num**2或pow(num,2),math.pow(num,2)值得一试,num*num效果最佳
别问我怎么知道的{:10_248:}
本题最大测试用例为2147483646
永恒的蓝色梦想 发表于 2020-3-19 19:02
自己的烂代码
力扣大神的解法
这位大神和我的想法不谋而合啊
kinkon 发表于 2020-3-19 18:50
一行应该够了
兄弟再想想吧……只过了一半的测试用例
fan1993423 发表于 2020-3-19 19:04
这位大神和我的想法不谋而合啊
力扣大神的我还没发……那个是我写的……{:10_248:}
def f355(c):
import math
d=int(math.sqrt(c)+1)
for i in range(d):
for j in range(i,d):
if i**2+j**2==c:
return True
return False
print(f355(5))
print(f355(4))
print(f355(3))
print(f355(2))
fan1993423 发表于 2020-3-19 18:57
还是错的,8是True
8不是False吗?哪两个数相加可以得到8?
kinkon 发表于 2020-3-19 19:05
8不是False吗?哪两个数相加可以得到8?
2**2+2**2
def f355(x):
n=0
while True:
t=x-n**2
if t==0:
return True
elif t<0:
return False
else:
z=t**0.5
if int(z)==z:
return True
else:
n+=1
fan1993423 发表于 2020-3-19 19:06
2**2+2**2
好吧,我改成True了,其实应该是错的,说的是a*a + b*b, 2*2+2*2都重复了
fan1993423 发表于 2020-3-19 19:04
这位大神和我的想法不谋而合啊
哇!过奖过奖{:10_248:}你也很棒棒
kinkon 发表于 2020-3-19 19:16
好吧,我改成True了,其实应该是错的,说的是a*a + b*b, 2*2+2*2都重复了
它题目中说的是两个整数,并没有指明这两个整数不能相等
a = int(input('输入:'))
n=0
for i in range(a//2+1):
for j in range(i,a//2+1):
if i**2+j**2==a:
print('输出:True')
print('解释:%d*%d+%d*%d=%d'%(i,i,j,j,a))
n=n+1
break
if n==0:
print('输出:Flase')
本帖最后由 whosyourdaddy 于 2020-3-22 10:54 编辑
import math
def func355(n):
m = int(pow(n,0.5))
for i in range(m,0,-1):
for j in range(0,m+1):
if pow(i,2)+pow(j,2)==n:
return True
return False
c= int(input("Enter a integer: "))
active = False
for a in range(1,c):
for b in range(1,c):
if (a*a + b*b) == c:
active = True
print(str(a)+'*'+ str(a) +"+" +str(b) + '*'+str(b)+"=" +str(c))
break
if active:
break
print(active)
楼主已经写了一个初步的,在10楼
def f(x):
for i in range(int(x ** 0.5)+1):
a = (x - i*i) ** 0.5
n = str(a).split('.')
if n == '0':
return True
break
return False
笨的方法
import math
n = int(input('n = '))
for i in range(n+1):
if (n-i**i) < 0:
print('False')
break
if str(math.sqrt(n-i*i)).split('.') == '0':
print('True')
break