546623863 发表于 2020-2-5 21:59
傻逼了,之前改的忘记改回去了
解答错误
输入:"211738"
输出:False
打印:
2 1
2 11
21 1
预期结果:True
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
546623863 发表于 2020-2-5 22:06
解答错误
输入:"111"
输出:True
预期结果:False
wanting-for 发表于 2020-2-5 20:59
应该可以了
解答错误
输入:"112358"
输出:False
预期结果:True
本帖最后由 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
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
这次应该没问题了吧
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"))
fan1993423 发表于 2020-2-5 21:19
哈哈,我俩思路基本一致,就是 a=='0',不是数字0,忘了打引号了吧。
我最开始的思路是先遍历寻找前两个数字,然后通过这俩来往后递推,,然后发现198019823962
这个测试点过不去,,接下来才修改为这个方法,能避免这个错误!
{:5_109:}
一个账号 发表于 2020-2-4 19:11
悬赏的题是你不会做吧......
真相了{:10_307:}
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