鱼C论坛

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

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

[复制链接]
 楼主| 发表于 2020-2-5 22:01:40 | 显示全部楼层
546623863 发表于 2020-2-5 21:59
傻逼了,之前改的忘记改回去了

解答错误

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

使用道具 举报

发表于 2020-2-5 22:06:32 | 显示全部楼层
zltzlt 发表于 2020-2-5 22:01
解答错误

输入:"211738"
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+1):
            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
            lenitem = len(str(nextc))
            while nextindex < length and nextindex+lenitem <= length and int(num[nextindex:nextindex+lenitem]) == nextc:
                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
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 22:07:55 | 显示全部楼层

解答错误

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

使用道具 举报

 楼主| 发表于 2020-2-5 22:11:08 | 显示全部楼层

解答错误

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

使用道具 举报

发表于 2020-2-5 22:14:22 | 显示全部楼层
本帖最后由 archlzy 于 2020-2-5 22:24 编辑
def fun323(string):
    l_s = len(string)
    l = (l_s-1) // 2
    for i in range(1,l+1):
        for j in range(i+1,l_s):
            w1 = string[0:i]
            w2 = string[i:j]
            if (w1[0] =='0'and len(w1) != 1) or (w2[0] =='0'and len(w2) != 1):
                continue
            temp_str = w1 + w2
            while len(temp_str) < l_s:
                w3 = str(int(w1)+int(w2))
                temp_str += w3
                w1 = w2
                w2 = w3
            if temp_str == string:
                return True
    return False


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

使用道具 举报

发表于 2020-2-5 22:24:11 | 显示全部楼层
zltzlt 发表于 2020-2-5 22:07
解答错误

输入:"111"
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//2+1):
            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
                b = int(num[nextindex: nextindex + lenitem])
                nextc = a+b
                nextindex += lenitem
                lenitem = len(str(nextc))
            if nextindex == length:
                return True
    return False

这次应该没问题了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 23:08:19 | 显示全部楼层
zltzlt 发表于 2020-2-5 22:11
解答错误

输入:"112358"

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,str(each),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("199100199"))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 23:12:44 | 显示全部楼层
fan1993423 发表于 2020-2-5 21:19
哈哈,我俩思路基本一致,就是 a[0]=='0',不是数字0,忘了打引号了吧。

我最开始的思路是先遍历寻找前两个数字,然后通过这俩来往后递推,,然后发现198019823962
这个测试点过不去,,接下来才修改为这个方法,能避免这个错误!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-18 15:42:45 | 显示全部楼层
一个账号 发表于 2020-2-4 19:11
悬赏的题是你不会做吧......

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

使用道具 举报

发表于 2021-4-21 10:58:45 | 显示全部楼层
def fun323(n):

    def funtion_x(n,p_1,p_2,p_3):
        num_1 = n[p_1:p_2]
        num_2 = n[p_2:p_3]
        sum_num = int(num_1) + int(num_2)
        p_4 = p_3 + len(str(sum_num))
        try:
            num_3 = n[p_3:p_4]
        except IndexError:
            return False
        for num in [num_1,num_2,num_3]:
            if len(num) > 1 and num[0] == '0':
                return False
        if sum_num == int(num_3):
            if p_4 == len(n):
                return True
            else:
                p_1 = p_2
                p_2 = p_3
                p_3 = p_4
                return funtion_x(n,p_1,p_2,p_3)
        else:
            return False
        
    for i in range(1,(len(n)//2)+1):
        for j in range(i+1,len(n)):
            p_1 = 0
            p_2 = i
            p_3 = j
            if funtion_x(n,p_1,p_2,p_3):
                return True
    return False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 01:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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