• python笔记1-用python解决小学生数学题


    前几天有人在群里给小编出了个数学题:

    假设你有无限数量的邮票,面值分别为6角,7角,8角,请问你最大的不可支付邮资是多少元?

    小编掰着手指头和脚趾头算了下,答案是:1.7元

    那么问题来了?为啥是1.7呢,于是小编用python解决了这个小学数学题。

    一、排列组合

    假设6、7、8角各有50张(50张够了),先计算出所有的可能组合

    二、排序、去重

    1. 先对组合就行排序,从小到大的顺序,排队站好,这里用到sort()函数(要是你用冒泡排序,那你就out啦!)

    2. sort函数只是对list序列排序,并没有返回值

    3. 排序完成后,接下来就是去掉重复的数据

     

    三、取出不能生成的数字

    1. 不在上面组合里面的数字就是不能生成的数字了,于是我们可以先取出来。

    2. 取出来后的数据放到r队列里。

    3. 从r队列取最后一个数据,就是答案啦。

     

    四、参考代码

    # coding:utf-8
    a = 6
    b = 7
    c = 8
    t = 50     # 票的张数
    s = []     # 排列组合全部放到这里
    # 生成的组合
    for i in range(t+1):
        s1 = a*i
        s.append(s1)
        for j in range(t+1):
            s2 = a*i+b*j
            s.append(s2)
            for k in range(t+1):
                s3 = a*i + b*j + c*k
                s.append(s3)


    # 排序
    s.sort()
    # 去掉重复
    news = []
    for i in s:
        if i not in news:
            news.append(i)
    print("组合生成的最大数%s"%news[-1])

    # 提取不在列表列表中的数字
    r = []
    for i in range(6*t):
        if i in news:
            pass
        else:
            r.append(i)
    print("组合不能生成的数字%s"%r)
    print("不能生成的最大数字为%s"%r[-1])​

    如果当年小学时候就能学会python,妈妈就不用担心我的学习了!

    在学习过程中有遇到疑问的,可以加selenium(python+java) QQ群交流:232607095

  • 相关阅读:
    状态压缩+枚举 UVA 11464 Even Parity
    数学/思维 UVA 11300 Spreading the Wealth
    贪心 UVA 11729 Commando War
    二分专题
    二分图判定+点染色/并查集 BestCoder Round #48 ($) 1002 wyh2000 and pupil
    数学 Codeforces Round #219 (Div. 2) B. Making Sequences is Fun
    贪心 Codeforces Round #191 (Div. 2) A. Flipping Game
    DP Codeforces Round #FF (Div. 1) A. DZY Loves Sequences
    递推 Codeforces Round #186 (Div. 2) B. Ilya and Queries
    递推DP Codeforces Round #260 (Div. 1) A. Boredom
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/6129684.html
Copyright © 2020-2023  润新知