题目:
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。请设计算法能够计算出读者购买一批书的最低价格。
思路:
通过计算6-10本方案容易总结出规律,即当买的本书为8时应4+4方案,其他都是5+1/2/4/5模式方案最佳,进而得出当购买图书大于5本且余数为3时采用5的倍数加8方案购买,其他为5的倍数加余数方案。
代码:
#include <iostream> using namespace std; void main() { int a,b,c; double d; cout<<"请输入要购买的书数: "; cin>>a; b=a%5; c=a/5; if(b==0) d=c*5*8*0.75; if(b==1) d=c*5*8*0.75+b*8; if(b==2) d=c*8*5*0.75+b*8*0.95; if(b==3&&a>5) d=(c-1)*5*8*0.75+4*8*0.8*2; if(b==3&&a<5) d=3*8*0.9; if(b==4) d=c*5*8*0.75+b*0.8*8; cout<<"最少钱数为:"<<d<<endl; }
截图:
总结:
本次作业相对简单但考察我们发现规律的能力,通过本次的作业可以让我们学到好多的题目存在它相应的运算规律,当我们遇到常规方法解决不了的问题时可以观察题目的规律。是否能用找规律求解的的方法解决。