购买一批书的最低价格

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

                                 本数                     折扣

                                   2                       5%

                                   3                       10%

                                   4                       20%

                                   5                       25%

根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
思路:
5本以下,购买不重样的是最低价格。
5本以上,6本是买一套并单买1本。
7本,买一套并买不重样的2本。
8本为特殊情况,买两套四本的。
9本为买一套并买不重样4本。
10本为买两套。
即买N本,特殊情况为5N+8
其余均和5,6,7,9,10类似。
代码:
 1 #include<iostream>
 2 using namespace std;
 3 
 4 void main()
 5 {
 6     int  a;
 7     cout << "购买书的数量:";
 8     cin >> a;
 9 
10     int n;
11     n = a % 5;
12 
13     switch (n)
14     {
15     case 0:
16         cout << "最低价格为:" << (a - n) / 5 * (8 * 5)*0.75;
17         break;
18     case 1:
19         cout << "最低价格为:" << (a - n) / 5 * (8 * 5)*0.75 + 8;
20         break;
21     case 2:
22         cout << "最低价格为:" << (a - n) / 5 * (8 * 5)*0.75 + 15.2;
23     case 3:
24     {
25               if (a == 3)
26                   cout << "最低价格为:21.6";
27               else
28                   cout << "最低价格为:" << (a - 8) / 5 * (8 * 5)*0.75 + 51.2;
29     }
30               break;
31     case 4:
32         cout << "最低价格为:" << (a - n) / 5 * (8 * 5)*0.75 + 25.6;
33         break;
34 
35     }
36 }

截图:

总结:
主要是理清这道题的思路,找到如何处理特殊情况的规律即可
原文地址:https://www.cnblogs.com/SanShaoS/p/4499107.html