栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python刷题(43-45)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python刷题(43-45)

Python刷题

PythonTip-挑战Python

(以下代码是在PyCharm上运行成功的,如果想要在刷题上成功运行,需要把前边的定义去掉)

43.题目描述:

斐波那契数列为1,1,2,3,5,8...。数列从第三项起满足,该项的数是其前面两个数之和。现在给你一个正整数n(n < 10000), 请你求出第n个斐波那契数取模20132013的值(斐波那契数列的编号从1开始)。

例如:

n=1, 则输出:1

n=4, 则输出:3

n = 4
l = [1,1]
for i in range (1,10000,1):
    a = l[i]+l[i-1]
    l.append(a)

print(l[n-1]%20132013)

(列出斐波那契数列然后对其取模即可)

44.题目描述: 

有一楼梯共n级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第n级,共有多少种走法? 现在给你一个正整数n(0 < n < 10001)

n = 2
l = [1,1]
for i in range (1,10000,1):
    a = l[i]+l[i-1]
    l.append(a)
print(l[n-1])

(这个问题算是斐波那契数列数列的衍生问题,列表l中第n个存的值就是第n+1级楼梯要走的步数,输出即可)

45.题目描述:

有一组砝码,重量互不相等,分别为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)

from itertools import combinations,permutations

w = [1, 2]
n = [2, 0]
weight = [0]
L = len(weight)
temp = []
temp1 = []
for i in range(0,len(w),1):  #求同一个砝码所有组合的可能
    a = w[i]
    b = n[i]
    if b>0:
        weight.append(a)
    while b > 1:
        weight.append(a)
        b = b - 1
weight1 = weight

for j in range(2,len(weight1)+1,1):  #求不同砝码之间的组合
    d = list(permutations(weight1, j))
    for z in range(0,len(d),1):
        temp = sum(d[z])
        #print(temp)
        temp1.append(temp)

weight = weight + temp1
weight = set(weight)

print(len(weight))

(个人觉得这部分代码没有问题,但是现实内存量过大,还需要在改进一些,但是我已经想不到什么好的办法了,先放着,等以后学一学再来改进)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/754832.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号