zoukankan      html  css  js  c++  java
  • 软件工程作业—最优买书问题

    1. 题目:

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

    本数 折扣 2    5%

                 3    10%

                 4    20%

                 5    25%

          根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。

          设计算法能够计算出读者购买一批书的最低价格。

    2. 设计思想:

          如果购买的本书小于等于5本,则有多少本买多少本不一样的。如果大于5本,则需要考虑。比如6本,是3 3优惠,还是5 1优惠等等。每5个为一个循环,所以只需要考虑6到10就可以了。其中6 7 9都是5和余数最省钱。而8则是4 4最省钱,所以这是一个例外,需要考虑。

    复制代码
    #include<iostream>
    using namespace std;
    
    
    int main()
    {
        int num;
        double money;
        cout<<"请输入要买图书本书:";
        cin>>num;
        
        if(num<=0)
        {
            cout<<"请重新输入要买图书个数:";
         }
        else if(num>0)
        {
            int m=num/5;
            int n=num%5;
            if(m==0)
            {
                if(n==0)
                {
                    money=0;
                }
                else if(n==1)
                {
                    money=8;
                }
                else if(n==2)
                {
                    money=8*2*(1-0.05);
                }
                else if(n==3)
                {
                    money=8*3*(1-0.10);
                }
                else if(n==4)
                {
                    money=8*4*(1-0.20);
                }
            }
            else if(m>0)
            {
                if(n==0)
                {
                    money=5*m*8*(1-0.25);
                }
                else if(n==1)
                {
                    money=5*8*m*(1-0.25)+8;
                }
                else if(n==2)
                {
                    money=5*8*m*(1-0.25)+8*2*(1-0.05);
                }
                else if(n==3)
                {
                    money=5*8*(m-1)*(1-0.25)+8*4*2*(1-0.20);
                }
                else if(n==4)
                {
                    money=5*8*m*(1-0.25)+8*4*(1-0.20);
                }
            }
        }
        cout<<"最低价格为:"<<money<<"元"<<endl;
        return 0;
    }
    复制代码

  • 相关阅读:
    PAT 1010. 一元多项式求导 (25)
    PAT 1009. 说反话 (20) JAVA
    PAT 1009. 说反话 (20)
    PAT 1007. 素数对猜想 (20)
    POJ 2752 Seek the Name, Seek the Fame KMP
    POJ 2406 Power Strings KMP
    ZOJ3811 Untrusted Patrol
    Codeforces Round #265 (Div. 2) 题解
    Topcoder SRM632 DIV2 解题报告
    Topcoder SRM631 DIV2 解题报告
  • 原文地址:https://www.cnblogs.com/java-meng/p/5558462.html
Copyright © 2011-2022 走看看