PythonTip--8.5

xiaoxiao2021-02-28  46

斐波那契数列

题目描述: 斐波那契数列为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))
转载请注明原文地址: https://www.6miu.com/read-35915.html

最新回复(0)