27拦键、分拆素數(shù)和
題目:把一個偶數(shù)拆成兩個不同素數(shù)的和,有幾種拆法呢萄金?
現(xiàn)在來考慮考慮這個問題媚朦,給你一個不超過10000的正的偶數(shù)n,
計算將該數(shù)拆成兩個不同的素數(shù)之和的方法數(shù)福稳,并輸出。
如n=10的圆,可以拆成3+7半火,只有這一種方法,因此輸出1.
參考答案:
def isPrime(n):
if n<=1:
return False
for i in range(2,n):
if n % i == 0:
return False
return True
n = int(input('輸入偶數(shù)n:'))
count = 0
for i in range(3,n):
if isPrime(i) and isPrime(n-i):
count += 1
print(count//2)
28梅掠、斐波那契數(shù)列
題目:斐波那契數(shù)列為1,1,2,3,5,8...店归。數(shù)列從第三項起滿足,該項的數(shù)是其前面兩個數(shù)之和∏胰現(xiàn)在給你一個正整數(shù)n(n < 10000), 請你求出第n個斐波那契數(shù)取模20132013的值(斐波那契數(shù)列的編號從1開始)秩伞。
例如:
n=1, 則輸出:1
n=4, 則輸出:3
參考答案:
def fib(n):
x,y = 0,1
while (n):
x,y,n = y,x+y,n-1
return x
print(fib(n)%20132013)
29、超級樓梯
題目:有一樓梯共n級展氓,剛開始時你在第一級脸爱,若每次只能跨上一級或二級,要走上第n級教寂,共有多少種走法?
參考答案:
#找規(guī)律酪耕,發(fā)現(xiàn)隨著n增加符合feib序列
def feib(n):
if n==1 or n==2:
return 1
elif n>2:
return feib(n-1)+feib(n-2)
else:
return 0
print(feib(11))
30迂烁、砝碼問題
題目:有一組砝碼递鹉,重量互不相等,分別為m1却盘、m2媳拴、m3……mn;它們可取的最大數(shù)量分別為x1塞关、x2子巾、x3……xn线梗。
現(xiàn)要用這些砝碼去稱物體的重量,問能稱出多少種不同的重量。
現(xiàn)在給你兩個正整數(shù)列表w和n仪搔, 列表w中的第i個元素w[i]表示第i個砝碼的重量僻造,列表n的第i個元素n[i]表示砝碼i的最大數(shù)量孩饼。i從0開始,請你輸出不同重量的種數(shù)镀娶。
如:w=[1,2], n=[2,1], 則輸出5(分析:共有五種重量:0,1,2,3,4)
提示:enumerate()函數(shù)的用法:函數(shù)用于將一個可遍歷的數(shù)據(jù)對象(如列表、元組或字符串)組合為一個索引序列宝泵,同時列出數(shù)據(jù)和數(shù)據(jù)下標,一般用在 for 循環(huán)當中框往。
>>>seq = ['one', 'two', 'three']
>>> for i, element in enumerate(seq):
... print i, element
...
0 one
1 two
2 three
參考答案(很難想到):
w=[1,2,4]
n=[2,1,5]
s=[0,]
a=[0,]
for i,ele in enumerate(n):
for j in range(ele+1):
a.append(j*w[i])
s=[x+y for x in s for y in a]
a=[0]
print(len(set(s)))
更清楚一些的:
from functools import reduce
#此處以w=[1,2,4],n=[4,2,1]為例解釋
L = []
for i in range(len(w)):
L.append([])
for j in range(n[i]+1):
L[i].append(w[i]*j)
#此處L==[[0,1,2,3,4],[0,2,4],[0,4]]椰弊,表示每種砝碼能提供的重量
#后面就簡單了瓤鼻,每種砝碼提供一個重量,消除重復的清焕,但是一一列出有這么多可能性:len(L[0]) * len(L[1]) *……* len(L[n]),而且想不到要怎樣表達
def x(a,b):
X = []
for i in a:
for j in b:
c = i + j
if c not in X:
X.append(c)
return X
#這里就把前兩種的可能性列出來秸妥,看作新的,再用reduce大法搞定
L = reduce(x,L)
print (len(L))