鱼C论坛

 找回密码
 立即注册
楼主: zltzlt

[已解决]Python:每日一题 355

[复制链接]
 楼主| 发表于 2020-3-19 18:59:06 | 显示全部楼层

不要使用暴力解法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 18:59:48 | 显示全部楼层

用 math.pow() 不是更好吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 19:01:15 | 显示全部楼层
楼主来测一下我的有没有问题,我的好像大数据都能出结果,就不知道对不对了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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效果最佳

别问我怎么知道的

本题最大测试用例为2147483646
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 19:04:02 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-3-19 19:02
自己的烂代码

力扣大神的解法

这位大神和我的想法不谋而合啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 19:04:57 | 显示全部楼层

兄弟再想想吧……只过了一半的测试用例
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 19:05:29 | 显示全部楼层
fan1993423 发表于 2020-3-19 19:04
这位大神和我的想法不谋而合啊

力扣大神的我还没发……那个是我写的……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
zltzlt + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 19:05:50 | 显示全部楼层
fan1993423 发表于 2020-3-19 18:57
还是错的,8是True

8不是False吗?哪两个数相加可以得到8?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 19:06:28 | 显示全部楼层
kinkon 发表于 2020-3-19 19:05
8不是False吗?哪两个数相加可以得到8?

2**2+2**2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
zltzlt + 5 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 19:16:24 | 显示全部楼层

好吧,我改成True了,其实应该是错的,说的是a*a + b*b, 2*2+2*2都重复了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 19:17:51 | 显示全部楼层
fan1993423 发表于 2020-3-19 19:04
这位大神和我的想法不谋而合啊

哇!过奖过奖你也很棒棒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 19:20:12 | 显示全部楼层
kinkon 发表于 2020-3-19 19:16
好吧,我改成True了,其实应该是错的,说的是a*a + b*b, 2*2+2*2都重复了

它题目中说的是两个整数,并没有指明这两个整数不能相等
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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')

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
zltzlt + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
zltzlt + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
zltzlt + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 21:18:00 | 显示全部楼层
楼主已经写了一个初步的,在10楼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[1] == '0':
            return True
            break
    return False
笨的方法

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
zltzlt + 5 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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('.')[1] == '0':
        print('True')
        break

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
zltzlt + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-24 22:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表