zltzlt 发表于 2020-2-5 22:01:40

546623863 发表于 2020-2-5 21:59
傻逼了,之前改的忘记改回去了

解答错误

输入:"211738"
输出:False
打印:
2 1
2 11
21 1
预期结果:True

546623863 发表于 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' and i >= 1:
                continue
      for j in range(i+1,(length+1)//2+1):
            if num == '0' and j != i+1:
                continue
            a = int(num[:i+1])
            b = int(num)
            nextindex = j+1
            nextc = a+b
            lenitem = len(str(nextc))
            while nextindex < length and nextindex+lenitem <= length and int(num) == nextc:
                a = b
                b = int(num)
                nextc = a+b
                nextindex += lenitem
                lenitem = len(str(nextc))
            if nextindex == length:
                return True
    return False

zltzlt 发表于 2020-2-5 22:07:55

546623863 发表于 2020-2-5 22:06


解答错误

输入:"111"
输出:True
预期结果:False

zltzlt 发表于 2020-2-5 22:11:08

wanting-for 发表于 2020-2-5 20:59
应该可以了

解答错误

输入:"112358"
输出:False
预期结果:True

archlzy 发表于 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
            w2 = string
            if (w1 =='0'and len(w1) != 1) or (w2 =='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


546623863 发表于 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' and i >= 1:
                continue
      for j in range(i+1,length//2+1):
            if num == '0' and j != i+1:
                continue
            a = int(num[:i+1])
            b = int(num)
            nextindex = j+1
            nextc = a+b
            print(a,b)
            lenitem = len(str(nextc))
            while nextindex < length and nextindex+lenitem <= length and int(num) == nextc:
                a = b
                b = int(num)
                nextc = a+b
                nextindex += lenitem
                lenitem = len(str(nextc))
            if nextindex == length:
                return True
    return False

这次应该没问题了吧

wanting-for 发表于 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' or b == '0' and len(b) != 1 or c == '0' and len(c) != 1:
            return False
      if each == int(c):
            return True
      elif c.startswith(str(each)):
            return get(b,str(each),c)
      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,str1
            if get(a,b,c):
                return True
    return False
print(solve323("199100199"))

wanting-for 发表于 2020-2-5 23:12:44

fan1993423 发表于 2020-2-5 21:19
哈哈,我俩思路基本一致,就是 a=='0',不是数字0,忘了打引号了吧。

我最开始的思路是先遍历寻找前两个数字,然后通过这俩来往后递推,,然后发现198019823962
这个测试点过不去,,接下来才修改为这个方法,能避免这个错误!
{:5_109:}

永恒的蓝色梦想 发表于 2020-3-18 15:42:45

一个账号 发表于 2020-2-4 19:11
悬赏的题是你不会做吧......

真相了{:10_307:}

776667 发表于 2021-4-21 10:58:45

def fun323(n):

    def funtion_x(n,p_1,p_2,p_3):
      num_1 = n
      num_2 = n
      sum_num = int(num_1) + int(num_2)
      p_4 = p_3 + len(str(sum_num))
      try:
            num_3 = n
      except IndexError:
            return False
      for num in :
            if len(num) > 1 and num == '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
页: 1 2 3 4 [5]
查看完整版本: Python:每日一题 323