zltzlt 发表于 2020-2-5 17:25
解答错误
输入:"199001200"
199+001=200 算的是false是吧
fan1993423 发表于 2020-2-5 17:27
199+001=200 算的是false是吧
对,数字不能以 0 开头但是可以是 0。
本帖最后由 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
fan1993423 发表于 2020-2-5 17:33
好吧
可以了,32 ms
zltzlt 发表于 2020-2-5 17:34
可以了,32 ms
是不是该有鱼币和荣誉的表示啊{:5_97:}{:10_279:}
fan1993423 发表于 2020-2-5 17:38
是不是该有鱼币和荣誉的表示啊
没有评分机会了{:10_269:}
哈哈
fan1993423 发表于 2020-2-5 17:39
哈哈
迟点吧{:10_277:}
William4869 发表于 2020-2-5 17:06
再来,,我杠上了
解答错误
输入:"111122335588143"
输出:False
预期结果:True
本帖最后由 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'))
kinkon 发表于 2020-2-5 18:14
再来
解答错误
输入:"0235813"
输出:True
预期结果:False
zltzlt 发表于 2020-2-5 18:05
解答错误
输入:"111122335588143"
改了,,我不要评分,告诉我有没有错,或者时间就行
William4869 发表于 2020-2-4 20:04
可以了,52 ms{:10_256:}
zltzlt 发表于 2020-2-5 18:15
解答错误
输入:"0235813"
改了,最后一个
kinkon 发表于 2020-2-5 18:14
再来
通过了,32 ms{:5_109:}
看下 324 题吧
zltzlt 发表于 2020-2-5 18:37
通过了,32 ms
看下 324 题吧
终于过了,一边看孩子一边想着怎么编,心好累
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'))
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"))
应该可以了
wanting-for 发表于 2020-2-5 20:59
应该可以了
哈哈,我俩思路基本一致,就是 a=='0',不是数字0,忘了打引号了吧。
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
傻逼了,之前改的忘记改回去了