题目:
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。
解决思路:
总结题目规律如下:
购书本数 | 购书搭配 | 所需钱数 | 花费最少的搭配组合 |
1 | 1 | 8 | 1 |
2 | 2 | 15.2 | 2 |
3 | 3 | 21.6 | 3 |
4 | 4 | 25.6 | 4 |
5 | 5 | 30 | 5 |
6 | 5+1 4+2 3+3 | 38 40.8 43.2 | 5+1 |
7 | 5+2 4+3 | 45.2 47.2 | 5+2 |
8 | 5+3 4+4 | 51.6 51.2 | 4+4 |
9 | 5+4 | 55.6 | 5+4 |
10 | 5+5 | 60 | 5+5 |
发现归律如下:
1.当购书本数在0-10之间时,对应的购书策略如上表所示;
2.当购书本书大于10时,相应的购书策略为:每10本书一组,对书本进行分组,完整的组最低的价格为60元,不完整的组对应1求取最小的花费,最后求和。
源代码
#include<iostream>
using namespace std;
void main()
{
int sum,a,b;
double less;
cout<<"请输入购书的本数:";
cin>>sum;
a=sum/10;
b=sum%10;
switch(b)
{
less=0;
case 0:
less=60*a;
break;
case 1:
less=60*a+8;
break;
case 2:
less=60*a+15.2;
break;
case 3:
less=60*a+21.6;
break;
case 4:
less=60*a+25.6;
break;
case 5:
less=60*a+30;
break;
case 6:
less=60*a+38;
break;
case 7:
less=60*a+45.2;
break;
case 8:
less=60*a+51.2;
break;
case 9:
less=60*a+55.6;
break;
}
cout<<"最低价格为:"<<less;
}
测试截图