哈利波特書籍購買
題目要求:
書店針對《哈利波特》系列書籍進行促銷活動,一共5卷,用編號0、1、2、3、4表示,單獨一卷售價8元, 具體折扣如下所示:
本數 折扣
2 5%
3 10%
4 20%
5 25%
根據購買的卷數以及本數,會對應不同折扣規則情況。單數一本書只會對應一個折扣規則,例如購買了兩本卷1,一本卷2,則可以享受5%的折扣,另外一本卷一則不享受優惠。
設計演算法能夠計算出讀者購買一批書的最低價格。
要求將設計思想、程式碼實現、實現截圖、個人總結以博文的形式發表。
1設計思路:
0,1,2,3,4共五本。一本八塊錢
本數折扣
2 5%
3 10%
4 20%
5 25%
本,價錢 原價 降價
1 8 8
2 16-16*%5 =15.2 16 0.8
3 3*8-3*8*%10 =21.6 24 2.4
4 32-32*%20 =25.8 32 6.4
5 40-40*%25 =30 40 10
6本 3+3 1+5 2+4
43.2 38 41
7本 1+6 2+5 3+4
46 45.2 47.4
8本 1+7 2+6 3+5 4+4
53.2 53.2 51.6 51.6
9本 1+8 2+7 3+6 4+5
59.6 60.4 59.6 55.8
10 本 5+5
通過以上對購買1到10本的購買分析,可以分別得到1到10本的最佳購買方式。 大多時候選擇五本書為一個整體來購買。餘下的就隨機購買五本書中不相同的卷就可以價格最低。但在數量為8的情況有所不同,這時候選擇4+4組合價格更低。
當購買數量大於十時,採用除以10取餘的方法,餘數部分使用前面分析的購買方式,其餘使用5本整體的購買方式。注意在餘數為8時的不同。
2源程式程式碼:
#include<iostream> using namespace std; void main() { int Book=0; double money; double a[5]={0,0.05,0.1,0.2,0.25}; while(Book<1) { cout<<"請輸入你想要買的書的本數:"; cin>>Book; } if(Book%10==8) { money=(Book/10)*10*8*(1-a[4])+(Book%10)*8*(1-a[3]); } else { money=(Book/5)*5*8*(1-a[4])+(Book%5)*8*(1-a[Book%5-1]); } cout<<"讀者購買這批書的最低價格為:"<<money<<endl; cout<<"購買方式如下:"<<endl; if(Book%10==8) { cout<<"五本中有四本書每本買"<< (Book/10)*2+2<<"本,"; cout<<"剩下的一本買"<< (Book/10)*2<<"本,"<<endl; } else { if(Book%5!=0) { cout<<"五本中有"<<Book%5<<"本書每本買"<< Book/5+1<<"本,"; cout<<"剩下的"<<5-Book%5<<"本每本買"<< Book/5<<"本,"<<endl; } else { cout<<"五本書每本買"<< Book/5<<"本 "<<endl; } } }
3 結果截圖:
4個人總結:
在遇到問題的時候,要是沒有思路就自己多列舉一下,從中找到規律。