鱼C论坛

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

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

[复制链接]
发表于 2020-2-5 17:27:34 | 显示全部楼层
zltzlt 发表于 2020-2-5 17:25
解答错误

输入:"199001200"

199+001=200 算的是false是吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 17:28:06 | 显示全部楼层
fan1993423 发表于 2020-2-5 17:27
199+001=200 算的是false是吧

对,数字不能以 0 开头但是可以是 0。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 17:33:50 | 显示全部楼层
本帖最后由 fan1993423 于 2020-2-5 17:35 编辑
zltzlt 发表于 2020-2-5 17:28
对,数字不能以 0 开头但是可以是 0。


好吧
def fun323(s):
    if len(s)<3:return False
    def recursive(a,s,j):
        b,c=s[i:i+j],s[i+j:]
        if (len(a)>1 and a[0]=='0') or (len(b)>1 and b[0]=='0') or (len(c)>1 and c[0]=='0'):
            return False
        t=str(int(a)+int(b))
        if c==t:
            return True
        elif c.startswith(t):
            return recursive(b,' '*i+c,len(t))
        else:
            return False
    for i in range(1,len(s)-1):
        for j in range(1,(len(s)-i)//2+1):
            a=s[:i]
            if recursive(a,s,j):return True
    return False

评分

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

查看全部评分

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

使用道具 举报

 楼主| 发表于 2020-2-5 17:34:31 | 显示全部楼层

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

使用道具 举报

发表于 2020-2-5 17:38:26 | 显示全部楼层

是不是该有鱼币和荣誉的表示啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 17:38:55 | 显示全部楼层
fan1993423 发表于 2020-2-5 17:38
是不是该有鱼币和荣誉的表示啊

没有评分机会了

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

使用道具 举报

发表于 2020-2-5 17:39:41 | 显示全部楼层
哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-5 17:40:05 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 18:05:14 | 显示全部楼层
William4869 发表于 2020-2-5 17:06
再来,,我杠上了

解答错误

输入:"111122335588143"
输出:False
预期结果:True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 18:14:37 | 显示全部楼层
本帖最后由 kinkon 于 2020-2-5 18:36 编辑
zltzlt 发表于 2020-2-5 17:17
解答错误

输入:"199111992"


再来
def f323(s):
    l=len(s)
    if l<3:return False
    for i in range(1,l//2+1):
        for j in range(1,l//2+1):
            c=i+j
            if len(s[i:c])==len(str(int(s[i:c]))) and len(str(int(s[:i])))==len(s[:i]):
                a,b=int(s[i:c]),int(s[:i])+int(s[i:c])
            while str(b)==s[c:c+len(str(b))]:
                c+=len(str(b))
                if c==l:return True
                a,b=b,a+b      
    return False
    
#print(f323('1023'))
#print(f323('199100199'))
#print(f323('112359'))
#print(f323('199111992'))
#print(f323('011'))
#print(f323('1001101'))
print(f323('0235813'))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 18:15:32 | 显示全部楼层

解答错误

输入:"0235813"
输出:True
预期结果:False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 18:20:41 | 显示全部楼层
zltzlt 发表于 2020-2-5 18:05
解答错误

输入:"111122335588143"

改了,,我不要评分,告诉我有没有错,或者时间就行

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
zltzlt + 2 + 2 还是给点小小的奖励~~

查看全部评分

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

使用道具 举报

 楼主| 发表于 2020-2-5 18:22:15 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 18:37:03 | 显示全部楼层
zltzlt 发表于 2020-2-5 18:15
解答错误

输入:"0235813"

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

使用道具 举报

 楼主| 发表于 2020-2-5 18:37:57 | 显示全部楼层

通过了,32 ms

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

使用道具 举报

发表于 2020-2-5 18:56:33 | 显示全部楼层
zltzlt 发表于 2020-2-5 18:37
通过了,32 ms

看下 324 题吧

终于过了,一边看孩子一边想着怎么编,心好累
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 20:25:51 | 显示全部楼层
zltzlt 发表于 2020-2-5 16:37
解答错误

输入:"0235813"

酱应该就对了
def solve(s:'str of int')->bool:
    def num(a,b):
        while True:
            yield a+b
            a,b = b,a+b
    le = len(s)
    for l in range(1,(le//2)+1):
        if l>1 and s[0]=='0':break
        for r in range(1,le-l):
            if r>1 and s[l] == '0':break
            n, get, t = iter(num(int(s[:l]),int(s[l:l+r]))), s[:l+r], 2
            while len(get)<=le:
                if get == s and t>=3:return True
                get += str(next(n))
                t += 1
    return False
if __name__ == '__main__':
    print('示例1 输出:',solve('112358'))
    print('示例2 输出:',solve('199100199'))
    print('别人错的 11#',solve('1023'))

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
zltzlt + 4 + 4 32 ms

查看全部评分

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

使用道具 举报

发表于 2020-2-5 20:59:21 | 显示全部楼层
def solve323(str1):
    def get(a, b, c):
        each = int(a) + int(b)
        if len(a) != 1 and a[0] == 0 or b[0] == '0' and len(b) != 1 or c[0] == '0' and len(c) != 1:
            return False
        if each == int(c):
            return True
        elif c.startswith(str(each)):
            return get(b,c,c[len(str(each)):])
        else:
            return False
    if len(str1) < 3:
        return False
    for i in range(1,len(str1)-1):
        for j in range(i+1,len(str1)):
            a,b,c = str1[:i],str1[i:j],str1[j:]
            if get(a,b,c):
                return True
    return False
print(solve323("011"))
应该可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 21:19:45 | 显示全部楼层

哈哈,我俩思路基本一致,就是 a[0]=='0',不是数字0,忘了打引号了吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 21:59:02 | 显示全部楼层
zltzlt 发表于 2020-2-5 16:46
解答错误

输入:"123"
def fun323(num):
    length = len(num)
    if length < 3:
        return False
    for i in range(length//2):
        if num[0] == '0' and i >= 1:
                continue
        for j in range(i+1,(length+1)//2):
            if num[i+1] == '0' and j != i+1:
                continue
            a = int(num[:i+1])
            b = int(num[i+1:j+1])
            nextindex = j+1
            nextc = a+b
            print(a,b)
            lenitem = len(str(nextc))
            while nextindex < length and nextindex+lenitem <= length and int(num[nextindex:nextindex+lenitem]) == nextc:
                a = b
                print(a,b)
                b = int(num[nextindex: nextindex + lenitem])
                nextc = a+b
                nextindex += lenitem
                lenitem = len(str(nextc))
            if nextindex == length:
                return True
    return False

傻逼了,之前改的忘记改回去了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 02:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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