买书问题
题目:
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。请设计算法能够计算出读者购买一批书的最低价格。
思路:解这种题时可以分几种情况:1 买的书低于5本,这时买不同编号的书便宜 2 买6-9本时,经过计算除了买8本,其他的都是成套买的便宜,买8本时可以成套买两个4本最便宜。 3 大于10本时,就要以5本为基数来买,当买的本书除以5余3时,则要分成n*5+8的形式,如13=5+8;
代码:
#include<iostream> using namespace std; void main() { int i,j,k,h; cout<<"请输入书的本书"<<endl; cin>>k; i=k%5;h=k/5; if(i==1) cout<<"最少需要花费"<<30*h+8<<"元"<<endl; if(i==2) cout<<"最少需要花费"<<30*h+16*0.95<<"元"<<endl; if(k==3) cout<<"最少需要花费"<<21.6<<"元"<<endl; if(i==3&&k>5) cout<<"最少需要花费"<<30*(h-1)+51.2<<"元"<<endl; if(i==4) cout<<"最少需要花费"<<30*h+25.6<<"元"<<endl; if(i==0) cout<<"最少需要花费"<<30*h<<"元"<<endl; }
截图:
总结:解这道题首先要理清思路,再对每种情况进行分析计算找出规律,最后很容易的可以得到答案。