购书问题

一、问题描述

   n书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:

     本数                   折扣

2                       5%

3                       10%

4                       20%

5                       25%

    根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则。例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。设计算法能够计算出读者购买一批书的最低价格。

二、 解决思想

    在输入购书数目的情况下考虑最优价格时,只需考虑本数位于1~9的情况,当大于这些的时候都可以将大于的部分分为5本一组进行25%的最大折扣。

三、代码

 1 /*======================================================================
 2             # Author: ZhangYaPeng
 3             # E-Mail: [email protected]
 4             # Last modified: 2015-04-16 12:47
 5             # Filename: Demo.cpp
 6             # Description:
 7 ======================================================================*/
 8
 9 # include <iostream>
10 using namespace std;
11 #define INIT 8
12
13 void Price(int p,int q,int sum)
14 {
15     switch(q)
16     {
17     case 0:
18         sum = 2*p*INIT*0.75*5;
19         cout<<"最低的价格为:"<<sum<<endl;
20         break;
21     case 1:
22         sum = 2*p*INIT*0.75*5+INIT;
23         cout<<"最低的价格为:"<<sum<<endl;
24         break;
25     case 2:
26         sum = 2*p*INIT*0.75*5+p*INIT*0.95;
27         cout<<"最低的价格为:"<<sum<<endl;
28         break;
29     case 3:
30         sum = 2*p*INIT*0.75*5+p*INIT*0.9;
31         cout<<"最低的价格为:"<<sum<<endl;
32         break;
33     case 4:
34         sum = 2*p*INIT*0.75*5+p*INIT*0.8;
35         cout<<"最低的价格为:"<<sum<<endl;
36         break;
37     case 5:
38         sum = 2*p*INIT*0.75*5+p*INIT*0.75;
39         cout<<"最低的价格为:"<<sum<<endl;
40         break;
41     case 6:
42         sum = (2*p+1)*INIT*5*0.75+INIT;
43         cout<<"最低的价格为:"<<sum<<endl;
44         break;
45     case 7:
46         sum= (2*p+1)*INIT*5*0.75+2*INIT*0.95;
47         cout<<"最低的价格为:"<<sum<<endl;
48         break;
49     case 8:
50         sum = 2*p*INIT*5*0.75+4*INIT*0.8*2;
51         cout<<"最低的价格为:"<<sum<<endl;
52         break;
53     case 9:
54         sum = (2*p+1)*INIT*5*0.75+4*INIT*0.8;
55         cout<<"最低的价格为:"<<sum<<endl;
56         break;
57     default:
58         cout<<"Data Error!"<<endl;
59     }
60 }
61 int main()
62 {
63     int count;
64     int sum=0;
65     cout<<"请输入购书数目:";
66     cin>>count;
67     int p = count/10;
68     int q = count%10;
69     Price(p,q,sum);
70     return 0;
71 }

五、总结

  本次练习中,题目思路主要是通过判断输入的数量,将其%10取余,主要是判断余数部分是1~9的哪一种情况,每种情况对应一种最优的打折情况,剩余部分将其划分为五本书一组,进行25%的打折,这样即可求出最优的折扣来购书。

时间: 2024-12-17 04:27:05

购书问题的相关文章

购书思想课堂作业4.14

1.题目: 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示: 本数                  折扣 2                       5% 3                       10% 4                       20% 5                       25% n根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折扣规则,例如购买了两本

我对国内两大购书站点的感受(dearbook和china-pub)

我在china-pub和dearbook都是老用户了(china-pub五星,dearbook钻石VIP).说一下近来我对两个站点的感觉. 1. Dearbook和当当合作以后送货速度比china-pub要快非常多:我在上海,一般Dearbook的书隔天能收到:而china-pub要等三天左右.出货时间快是不够的,关键是从订购到送达所需的总时间. 2. Dearbook和当当合作以后,開始了满99免运费,而计算机的书一般买两三本就能够免了.相对china-pub七元高昂的送费,再加上Dearbo

《最优的购书方案》

问题描述:对编号不同的五本书进行购买,其中单买一本8元,买不同编号的两本书享受5%的折扣,不同编号的三本书享受10%的折扣,不同编号的四本书享受20%的折扣,不同编号的五本书享受25%的折扣,注意买同种编号的书不享受折扣优惠:根据顾客提供的买书量,为顾客设计最优的购书方案,以便以最低的价格买到想要的数量. 设计思想:通过对买10本书以内的方案设计后,得出其最优方案的规律是除了买8本是例外之外,其余的最优方案均是买全套书的整数倍再加上另单独购买买书量对整套书的本数求余后所得余数组合后即可. 源代码

购书打折最优方案

题目:书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示: 本数                  折扣                                   2                       5%                                   3                       10%                                   4    

课堂练习-购书问题

题目: • 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元. 具体折扣如下所示: 本数 折扣 2  5% 3     10% 4     20% 5     25% • 根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠. • 设计算法能够计算出读者购买一批书的最低价格. 设计思路: 当购书数量在1-5本时,按最高折扣即可. 当购书数量在

课堂作业-购书问题

1.题目要求: 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示: 本数                   折扣 2                    5% 3                    10% 4                    20% 5                    25% 根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可

最优惠的购书价格程序设计

一.设计思路       题目要求: 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示:                                  本数                     折扣 2                       5% 3                       10% 4                       20% 5                       25%

购书方案

一.思路 购买书总共有十种方案,每一种方案单独考虑.因此只需要分情况考虑就行. 二.代码 //书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示: // 本数 折扣 // 2 5% // 3 10% // 4 20% // 5 25% //信1301-1 黄山成 20133048 #include<iostream> using namespace std; void book_Strategy(int n) {

课堂实验--购书最低价实验

一.设计思想 本次实验是要计算出购买一批图书的最低价格,当选取不同类型的图书时购买者可以享受折扣,并且根据购买者买的图书种类的数目可以分为四档折扣,本数为2,3,4,5时的折扣分别为5%,10%,20%,25%. 本次题目的解题核心是找到最低价的规律,并且这个规律在每十本书中循环一次,在这十本书中除了八本书时享受20%的优惠以外,其它的都遵循优先享受25%优惠的规律,因此在计算最终价格时,只要将10的倍数的书和剩余的书分开来计算价格就可以了. 二.代码实现 //Hao Ying 2016/6/2