购书问题

题目:

书店针对《哈利波特》系列书籍进行促销活动,一共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;
}

  

截图:

总结:

本次作业相对简单但考察我们发现规律的能力,通过本次的作业可以让我们学到好多的题目存在它相应的运算规律,当我们遇到常规方法解决不了的问题时可以观察题目的规律。是否能用找规律求解的的方法解决。

原文地址:https://www.cnblogs.com/lingxi/p/4492020.html