Harrypotter

#include<iostream>
using namespace std;

int main()
{
    int count,x[5]={0};
    int a,b,c,d;
    cout<<"请输入总数:"<<endl;
    cin>>count;
    a=count/5;
    x[4]=a;
    b=count%5;
    x[b-1]=1;

        if(b==3&&b!=count)
        {
            /*a=a-1;
            x[4]=a;
            b=b+5;
            c=c-1;
            a=count/c;
            x[c-1]=a;
            b=count%c;
            x[b-1]=b;*/
x[4]=x[4]-1;
x[3]=x[3]+2;


} cout
<<"购买单本:"<<x[0]<<""<<endl; cout<<"购买两本:"<<x[1]<<""<<endl; cout<<"购买三本:"<<x[2]<<""<<endl; cout<<"购买四本:"<<x[3]<<""<<endl; cout<<"购买五本:"<<x[4]<<""<<endl; return 0; }

注释:

购买数量          1      2      3      4     5

折扣率(%)    5     10     15    20    25     

单本折扣(元)   0     0.4   0.8    1.6    2 

 

购买数量              6       7        8      9       10    ……

最优解               5+1    5+2   4+4   5+4   5+5   ……

可知,买五本单本折扣最大,所以当购买数量小于等于5时,应该优先选择购买不同种类的书

当购买数量大于5时,应该优先购买五本,可是当购买的的种类的之间距离相差超1时(例如:8=5+3,5-3=2),容易出现错误

继续向下计算,发现大数的时候也是如此

所以用总数count做整除,得到购买五本的数量,余数为购买其他数量的书的数

当二者相差超过1时,商减1,购买5本数量少1,减小差距

 

转载于:https://www.cnblogs.com/fooreveryu/p/5553486.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值