zltzlt 发表于 2020-3-19 18:59:06

一个账号 发表于 2020-3-19 18:44


不要使用暴力解法

一个账号 发表于 2020-3-19 18:59:48

qiuyouzhi 发表于 2020-3-19 17:57
改用BIF

用 math.pow() 不是更好吗?

fan1993423 发表于 2020-3-19 19:01:15

楼主来测一下我的有没有问题,我的好像大数据都能出结果,就不知道对不对了

永恒的蓝色梦想 发表于 2020-3-19 19:02:28

本帖最后由 永恒的蓝色梦想 于 2020-3-19 19:30 编辑

友情提示:

开平方请使用math.sqrt(num)
平方不要用num**2或pow(num,2),math.pow(num,2)值得一试,num*num效果最佳

别问我怎么知道的{:10_248:}

本题最大测试用例为2147483646

fan1993423 发表于 2020-3-19 19:04:02

永恒的蓝色梦想 发表于 2020-3-19 19:02
自己的烂代码

力扣大神的解法

这位大神和我的想法不谋而合啊

永恒的蓝色梦想 发表于 2020-3-19 19:04:57

kinkon 发表于 2020-3-19 18:50
一行应该够了

兄弟再想想吧……只过了一半的测试用例

永恒的蓝色梦想 发表于 2020-3-19 19:05:29

fan1993423 发表于 2020-3-19 19:04
这位大神和我的想法不谋而合啊

力扣大神的我还没发……那个是我写的……{:10_248:}

ouyunfu 发表于 2020-3-19 19:05:47

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))

kinkon 发表于 2020-3-19 19:05:50

fan1993423 发表于 2020-3-19 18:57
还是错的,8是True

8不是False吗?哪两个数相加可以得到8?

fan1993423 发表于 2020-3-19 19:06:28

kinkon 发表于 2020-3-19 19:05
8不是False吗?哪两个数相加可以得到8?

2**2+2**2

塔利班 发表于 2020-3-19 19:13:46

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

kinkon 发表于 2020-3-19 19:16:24

fan1993423 发表于 2020-3-19 19:06
2**2+2**2

好吧,我改成True了,其实应该是错的,说的是a*a + b*b, 2*2+2*2都重复了

永恒的蓝色梦想 发表于 2020-3-19 19:17:51

fan1993423 发表于 2020-3-19 19:04
这位大神和我的想法不谋而合啊

哇!过奖过奖{:10_248:}你也很棒棒

fan1993423 发表于 2020-3-19 19:20:12

kinkon 发表于 2020-3-19 19:16
好吧,我改成True了,其实应该是错的,说的是a*a + b*b, 2*2+2*2都重复了

它题目中说的是两个整数,并没有指明这两个整数不能相等

快马加鞭未下鞍 发表于 2020-3-19 20:28:31

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-19 20:59:46

本帖最后由 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

Herry2020 发表于 2020-3-19 21:07:35

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)

TJBEST 发表于 2020-3-19 21:18:00

楼主已经写了一个初步的,在10楼

风魔孤行者 发表于 2020-3-19 21:28:03

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
笨的方法

wuqramy 发表于 2020-3-19 21:44:33

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
页: 1 [2] 3 4 5 6 7
查看完整版本: Python:每日一题 355