PythonTip--8.5

本文解析了斐波那契数列、楼梯爬法及砝码组合问题。通过具体实例介绍了递推算法的应用,展示了如何利用简单的数学原理解决实际问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

斐波那契数列

题目描述: 斐波那契数列为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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值