课堂作业买书

购买一批书的最低价格

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

                                 本数                     折扣

                                   2                       5%

                                   3                       10%

                                   4                       20%

                                   5                       25%

根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
设计思路:
   就是找规律,把它当作一个数学题目进行计算,已知买1-5本的折扣规律,然后进行接下去的运算,找出买每本时的最优方案,计算会发现,除了八本书时享受20%的优惠以外,8本为特殊情况,买两套四本的。
#include<iostream>
using namespace std;

int main()
{
   int booknum=0,x=0;             //booknum为书的数目,x是余数
   double money;                  //价钱
   cout<<"请输入图书的数量:";
   cin>>booknum;

   y=booknum%5;

   if(x==0)
     {                     //如果余数是一的话,就利用下面这个公示求最优解
       money=(booknum/5)*(5*8)*0.75;
     }
   else if(x==1)  
     {                     //如果余数十一
       money=(booknum-x)/5*(5*8)*0.75+x*8;
      }
   else if(x==2)
     {
       money=(booknum-x)/5*(5*8)*0.75+x*8*0.95;
      }
   else if(x==3)
     {
       if(booknum==3)
          money=21.6;
       else
          money=(booknum-8)/5*(5*8)*0.75+51.2;
      }
   else
       money=(booknum-x)/5*(5*8)*0.75+x*8*0.8;

   cout<<"最低价格是:"<<money<<endl;

   return 0;
}

体会:

这种类似的有意思的数学题多动笔,多动脑,总归会解决的,不要怕费时间,完成之后的收获还是很大的。

原文地址:https://www.cnblogs.com/GloryYT/p/5563039.html