买书问题

在节假日的时候,书店一般都会做促销活动。由于《哈利波特》系列相当畅销,店长决定通过促销活动来回馈读者。在销售的《哈利波特》平装本系列中,一共有五卷,用编号0, 1, 2, 3, 4来表示。假设每一卷单独销售均需要8欧元。如果读者一次购买不同的两卷,就可以扣除5%的费用,三卷则更多。假设具体折扣的情况如下:

 

本数

折扣

2

5%

3

10%

4

20%

5

25%

 

 

在一份订单中,根据购买的卷数以及本书,就会出现可以应用不同折扣规则的情况。但是,一本书只会应用一个折扣规则。比如,读者一共买了两本卷一,一本卷二。那么,可以享受到5%的折扣。另外一本卷一则不能享受折扣。如果有多种折扣,希望能够计算出的总额尽可能的低。

要求根据这样的需求,设计出算法,能够计算出读者所购买一批书的最低价格。

#! /usr/bin/python
# coding=utf-8
import random
from itertools import groupby
def main():
    arr = [random.randint(0,4) for i in range(random.randint(1,10)) ]
    print arr
    discount(arr)
    
def discount(arr):
    arr =sorted(arr)
    data = [len(list(g)) for k,g in groupby(arr)]
    table = [0,5,10,20,25]
    total = 0
    for i in range(max(data)):
        data = [i-1 for i in data if i]
        l = len(data)
        price = l * 8 * (100 - table[len(data) - 1]) / 100
        print "%s,%s * 8 - %s%% = %s" % (data,l, table[len(data) - 1], price)
        total += price
    print total
        

if __name__ == '__main__':
    main()
    
    

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值