斐波那契数列
题目描述: 斐波那契数列为1,1,2,3,5,8…。数列从第三项起满足,该项的数是其前面两个数之和。
现在给你一个正整数n(n <10000), 请你求出第n个斐波那契数取模20132013的值(斐波那契数列的编号从1开始)。
思路:
没啥纠结的,直接循环加就好了
代码
n = 10
def func(n):
a,b = 1,1
count =1
while count != n:
a,b = b,(a+b)
count+=1
return a%20132013
print(func(n))
==============分割线============
超级楼梯
题目描述:
有一楼梯共n级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第n级,共有多少种走法?
思路:
这题本质上就是斐波那契数列,第二级只有1种走法,第三级只有2种走法,那第四级呢?
想要走到第四级只有两种可能,一个是从第三级跨一步上来,另一个就是从第二级跨两步上来,所以第四级就是1+2=3
那第五级呢?
同理,就是2+3=5
代码:
n=3
def func(n):
a,b = 1,1
count = 1
while count!= n:
a,b=b,(a+b)
count+=1
return a
print(func(n))
==============分割线============
砝码问题
题目描述:
有一组砝码,重量互不相等,分别为m1、m2、m3……mn;它们可取的最大数量分别为x1、x2、x3……xn。
现要用这些砝码去称物体的重量,问能称出多少种不同的重量。 现在给你两个正整数列表w和n,
列表w中的第i个元素w[i]表示第i个砝码的重量,列表n的第 i个元素n[i]表示砝码i的最大数量。i从0开始,请你输出不同重量的种数。
如:w=[1,2], n=[2,1], 则输出5(分析:共有五种重量:0,1,2,3,4)
思路:
要列出所有可能的重量,即没有重复,所以第一个想到的就是建一个集合,
然后循环集合,给集合中的每个元素加上当前砝码重量*count,count从1到当前砝码的数量。
代码:
w=[1,2]
n=[2,1]
def func(w,n):
length = len(w)
weight = set([0])
for i in range(len(w)):
temp = weight.copy()
for j in temp:
count = 1
while count<=n[i]:
weight.add(j+count*w[i])
count+=1
return len(weight)
print(func(w,n))