fan1993423 发表于 2020-2-5 17:27:34

zltzlt 发表于 2020-2-5 17:25
解答错误

输入:"199001200"


199+001=200 算的是false是吧

zltzlt 发表于 2020-2-5 17:28:06

fan1993423 发表于 2020-2-5 17:27
199+001=200 算的是false是吧

对,数字不能以 0 开头但是可以是 0。

fan1993423 发表于 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,s
      if (len(a)>1 and a=='0') or (len(b)>1 and b=='0') or (len(c)>1 and c=='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

zltzlt 发表于 2020-2-5 17:34:31

fan1993423 发表于 2020-2-5 17:33
好吧

可以了,32 ms

fan1993423 发表于 2020-2-5 17:38:26

zltzlt 发表于 2020-2-5 17:34
可以了,32 ms

是不是该有鱼币和荣誉的表示啊{:5_97:}{:10_279:}

zltzlt 发表于 2020-2-5 17:38:55

fan1993423 发表于 2020-2-5 17:38
是不是该有鱼币和荣誉的表示啊

没有评分机会了{:10_269:}

fan1993423 发表于 2020-2-5 17:39:41

哈哈

zltzlt 发表于 2020-2-5 17:40:05

fan1993423 发表于 2020-2-5 17:39
哈哈

迟点吧{:10_277:}

zltzlt 发表于 2020-2-5 18:05:14

William4869 发表于 2020-2-5 17:06
再来,,我杠上了

解答错误

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

kinkon 发表于 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)==len(str(int(s))) and len(str(int(s[:i])))==len(s[:i]):
                a,b=int(s),int(s[:i])+int(s)
            while str(b)==s:
                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'))

zltzlt 发表于 2020-2-5 18:15:32

kinkon 发表于 2020-2-5 18:14
再来

解答错误

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

William4869 发表于 2020-2-5 18:20:41

zltzlt 发表于 2020-2-5 18:05
解答错误

输入:"111122335588143"


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

zltzlt 发表于 2020-2-5 18:22:15

William4869 发表于 2020-2-4 20:04


可以了,52 ms{:10_256:}

kinkon 发表于 2020-2-5 18:37:03

zltzlt 发表于 2020-2-5 18:15
解答错误

输入:"0235813"


改了,最后一个

zltzlt 发表于 2020-2-5 18:37:57

kinkon 发表于 2020-2-5 18:14
再来

通过了,32 ms{:5_109:}

看下 324 题吧

kinkon 发表于 2020-2-5 18:56:33

zltzlt 发表于 2020-2-5 18:37
通过了,32 ms

看下 324 题吧

终于过了,一边看孩子一边想着怎么编,心好累

阴阳神万物主 发表于 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':break
      for r in range(1,le-l):
            if r>1 and s == '0':break
            n, get, t = iter(num(int(s[:l]),int(s))), 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'))

wanting-for 发表于 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 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,c,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("011"))
应该可以了

fan1993423 发表于 2020-2-5 21:19:45

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

哈哈,我俩思路基本一致,就是 a=='0',不是数字0,忘了打引号了吧。

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

傻逼了,之前改的忘记改回去了
页: 1 2 3 [4] 5
查看完整版本: Python:每日一题 323