函数名不能有#
所以:
#!python3import re
def extract(s):
return [i[1:] for i in re.findall(r'#\w+',s)]
print(extract('ABC #123ab! #abc'))
print(extract('ABC #123ab! #123ab! #abc'))
运行结果:
[willie@bogon ~]$ python3
Python 3.5.2 (default, Sep 30 2016, 01:32:24)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>import re
>>>def extract(s):
... return [i[1:] for i in re.findall(r'#\w+',s)]
...
>>>extract('ABC #123ab! #abc')
['123ab', 'abc']
完全的暴力:
i=0while (~i&1) or (i%3!=2) or (i%5!=4) or (i%6!=5):
i+=7
print i
考虑数学上的优化——
x=1(mod 2)
x=2(mod 3)
x=4(mod 5)
x=5(mod 6)
x=0(mod 7)
前四个同余方程又可改写为:
x=2-1=-1(mod 2)
x=3-1=-1(mod 3)
x=5-1=-1(mod 5)
x=6-1=-1(mod 6)
联立得:x=-1(mod lcm(2,3,5,6)=30)
交上最后一个同余方程得:x%30==29且x%7==0
到这步时,便可以再打一个暴力:
i=0while i%30!=29:
i+=7
print i
考虑继续优化——
原同余方程又可改写为:
x=30*m+29(m∈N)
x=7*n(n∈N+)
联立得:
30*m+29=7*n
即:n=(30*m+29)/7=4*m+4+(2*m+1)/7
∵n∈N+
∴(2*m+1)/7∈N
∴m=3(mod 7)
∴m最小为3,n最小为17,x最小为119
于是有O(1)的程序:
print 119