鱼C论坛

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

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

[复制链接]
发表于 2020-2-5 17:27:34 | 显示全部楼层
zltzlt 发表于 2020-2-5 17:25
解答错误

输入:"199001200"

199+001=200 算的是false是吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 17:28:06 | 显示全部楼层
fan1993423 发表于 2020-2-5 17:27
199+001=200 算的是false是吧

对,数字不能以 0 开头但是可以是 0。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 17:33:50 | 显示全部楼层
本帖最后由 fan1993423 于 2020-2-5 17:35 编辑
zltzlt 发表于 2020-2-5 17:28
对,数字不能以 0 开头但是可以是 0。


好吧
  1. def fun323(s):
  2.     if len(s)<3:return False
  3.     def recursive(a,s,j):
  4.         b,c=s[i:i+j],s[i+j:]
  5.         if (len(a)>1 and a[0]=='0') or (len(b)>1 and b[0]=='0') or (len(c)>1 and c[0]=='0'):
  6.             return False
  7.         t=str(int(a)+int(b))
  8.         if c==t:
  9.             return True
  10.         elif c.startswith(t):
  11.             return recursive(b,' '*i+c,len(t))
  12.         else:
  13.             return False
  14.     for i in range(1,len(s)-1):
  15.         for j in range(1,(len(s)-i)//2+1):
  16.             a=s[:i]
  17.             if recursive(a,s,j):return True
  18.     return False
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
zltzlt + 4 + 4

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 17:34:31 | 显示全部楼层

可以了,32 ms
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 17:38:26 | 显示全部楼层

是不是该有鱼币和荣誉的表示啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 17:38:55 | 显示全部楼层
fan1993423 发表于 2020-2-5 17:38
是不是该有鱼币和荣誉的表示啊

没有评分机会了

1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 17:39:41 | 显示全部楼层
哈哈
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-5 17:40:05 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 18:05:14 | 显示全部楼层
William4869 发表于 2020-2-5 17:06
再来,,我杠上了

解答错误

输入:"111122335588143"
输出:False
预期结果:True
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 18:14:37 | 显示全部楼层
本帖最后由 kinkon 于 2020-2-5 18:36 编辑
zltzlt 发表于 2020-2-5 17:17
解答错误

输入:"199111992"


再来
  1. def f323(s):
  2.     l=len(s)
  3.     if l<3:return False
  4.     for i in range(1,l//2+1):
  5.         for j in range(1,l//2+1):
  6.             c=i+j
  7.             if len(s[i:c])==len(str(int(s[i:c]))) and len(str(int(s[:i])))==len(s[:i]):
  8.                 a,b=int(s[i:c]),int(s[:i])+int(s[i:c])
  9.             while str(b)==s[c:c+len(str(b))]:
  10.                 c+=len(str(b))
  11.                 if c==l:return True
  12.                 a,b=b,a+b      
  13.     return False
  14.    
  15. #print(f323('1023'))
  16. #print(f323('199100199'))
  17. #print(f323('112359'))
  18. #print(f323('199111992'))
  19. #print(f323('011'))
  20. #print(f323('1001101'))
  21. print(f323('0235813'))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 18:15:32 | 显示全部楼层

解答错误

输入:"0235813"
输出:True
预期结果:False
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 18:20:41 | 显示全部楼层
zltzlt 发表于 2020-2-5 18:05
解答错误

输入:"111122335588143"

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

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
zltzlt + 2 + 2 还是给点小小的奖励~~

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 18:22:15 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 18:37:03 | 显示全部楼层
zltzlt 发表于 2020-2-5 18:15
解答错误

输入:"0235813"

改了,最后一个
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 18:37:57 | 显示全部楼层

通过了,32 ms

看下 324 题吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 18:56:33 | 显示全部楼层
zltzlt 发表于 2020-2-5 18:37
通过了,32 ms

看下 324 题吧

终于过了,一边看孩子一边想着怎么编,心好累
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 20:25:51 | 显示全部楼层
zltzlt 发表于 2020-2-5 16:37
解答错误

输入:"0235813"

酱应该就对了
  1. def solve(s:'str of int')->bool:
  2.     def num(a,b):
  3.         while True:
  4.             yield a+b
  5.             a,b = b,a+b
  6.     le = len(s)
  7.     for l in range(1,(le//2)+1):
  8.         if l>1 and s[0]=='0':break
  9.         for r in range(1,le-l):
  10.             if r>1 and s[l] == '0':break
  11.             n, get, t = iter(num(int(s[:l]),int(s[l:l+r]))), s[:l+r], 2
  12.             while len(get)<=le:
  13.                 if get == s and t>=3:return True
  14.                 get += str(next(n))
  15.                 t += 1
  16.     return False
  17. if __name__ == '__main__':
  18.     print('示例1 输出:',solve('112358'))
  19.     print('示例2 输出:',solve('199100199'))
  20.     print('别人错的 11#',solve('1023'))
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
zltzlt + 4 + 4 32 ms

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 20:59:21 | 显示全部楼层
  1. def solve323(str1):
  2.     def get(a, b, c):
  3.         each = int(a) + int(b)
  4.         if len(a) != 1 and a[0] == 0 or b[0] == '0' and len(b) != 1 or c[0] == '0' and len(c) != 1:
  5.             return False
  6.         if each == int(c):
  7.             return True
  8.         elif c.startswith(str(each)):
  9.             return get(b,c,c[len(str(each)):])
  10.         else:
  11.             return False
  12.     if len(str1) < 3:
  13.         return False
  14.     for i in range(1,len(str1)-1):
  15.         for j in range(i+1,len(str1)):
  16.             a,b,c = str1[:i],str1[i:j],str1[j:]
  17.             if get(a,b,c):
  18.                 return True
  19.     return False
  20. print(solve323("011"))
复制代码

应该可以了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 21:19:45 | 显示全部楼层

哈哈,我俩思路基本一致,就是 a[0]=='0',不是数字0,忘了打引号了吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 21:59:02 | 显示全部楼层
zltzlt 发表于 2020-2-5 16:46
解答错误

输入:"123"
  1. def fun323(num):
  2.     length = len(num)
  3.     if length < 3:
  4.         return False
  5.     for i in range(length//2):
  6.         if num[0] == '0' and i >= 1:
  7.                 continue
  8.         for j in range(i+1,(length+1)//2):
  9.             if num[i+1] == '0' and j != i+1:
  10.                 continue
  11.             a = int(num[:i+1])
  12.             b = int(num[i+1:j+1])
  13.             nextindex = j+1
  14.             nextc = a+b
  15.             print(a,b)
  16.             lenitem = len(str(nextc))
  17.             while nextindex < length and nextindex+lenitem <= length and int(num[nextindex:nextindex+lenitem]) == nextc:
  18.                 a = b
  19.                 print(a,b)
  20.                 b = int(num[nextindex: nextindex + lenitem])
  21.                 nextc = a+b
  22.                 nextindex += lenitem
  23.                 lenitem = len(str(nextc))
  24.             if nextindex == length:
  25.                 return True
  26.     return False
复制代码


傻逼了,之前改的忘记改回去了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-24 16:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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