课堂练习之书费问题
2016-05-30 16:44
176 查看
题目:书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
思路:
根据题目可以清楚点的知道在1-5本之间时,购买1、2、3、4、5本不同书籍最省钱,6本时是5+1,7本时是5+2,8本时是4+4,9本时是5+4,以上是最省钱的购买方式。
即假设购买的书籍是n本,则花费最少的金额为w,当n%5=0时,w=n*8*0.75;当n%5=1时,w=(n-1)*8*0.75+8;当n%5=2时,w=(n-2)*8*0.75+8*2*0.95;
当n%5=3时,w=(n-8)*8*0.75+8*8*0.8;当n%5=4时,w=(n-4)*8*0.75+4*8*0.8。以上就可以的得出最少花费的购买书籍的方式。
源代码:
结果截图:
个人总结:
看到以上这类问题时,要用笔在纸上划一划,找找规律基本就能解决问题。
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
思路:
根据题目可以清楚点的知道在1-5本之间时,购买1、2、3、4、5本不同书籍最省钱,6本时是5+1,7本时是5+2,8本时是4+4,9本时是5+4,以上是最省钱的购买方式。
即假设购买的书籍是n本,则花费最少的金额为w,当n%5=0时,w=n*8*0.75;当n%5=1时,w=(n-1)*8*0.75+8;当n%5=2时,w=(n-2)*8*0.75+8*2*0.95;
当n%5=3时,w=(n-8)*8*0.75+8*8*0.8;当n%5=4时,w=(n-4)*8*0.75+4*8*0.8。以上就可以的得出最少花费的购买书籍的方式。
源代码:
#include <iostream> using namespace std; void main() { int n;//n为要购买书籍的数量 double w;//w为购买书籍所花费最少的金额 for(;;) { cout<<"请输入要购买书籍的数量:"<<endl; cin>>n; //按照购买不同数量书籍的情况来设计不同的表达式 if(n%5==0) { w=n*8*0.75; } else if(n%5+5==6) { w=(n-1)*8*0.75+8; } else if(n%5+5==7) { w=(n-2)*8*0.75+2*8*0.95; } else if(n%5+5==8) { w=(n-8)*8*0.75+8*8*0.8; } else if(n%5+5==9) { w=(n-4)*8*0.75+4*8*0.8; } cout<<"买这批书花费最少为:"<<w<<"元"<<endl; } }
结果截图:
个人总结:
看到以上这类问题时,要用笔在纸上划一划,找找规律基本就能解决问题。
相关文章推荐
- 服务接口(0529)
- pod install/pod update更新慢的问题
- Spring MVC过滤器-登录过滤
- awk 命令详解
- Android Studio 第一次新建Android Gradle项目超级慢的解决方案
- Fresco介绍:Android的一个新图片库
- [leetcode] 【链表】86. Partition List
- C# 窗体应用程序制作虚拟键盘按键功能
- Ubuntu 怎么使用root用户登录?
- Java网络编程——InetAddress类和URL类
- C++11 lambda表达式
- 22个值得收藏的android开源代码-UI篇
- Java计算机硬盘大小转换(B,KB,MB,GB,TB,PB之间的大小转换)
- CSS和JavaScript以及Ajax实现预加载图片的方法及优缺点分析
- javascript笔试题(6) js 数组
- 设置MySQL最大连接数
- 使用ZooKeeper实现配置同步
- 【BZOJ3612】[Heoi2014]平衡【计数DP】【整数拆分】
- android 基础 网络交互 HttpConnection交互
- 仿猎豹垃圾清理(实现原理+源码)