1、題目要求:
書店針對《哈利波特》系列書籍進行**活動,一共5卷,用編號0、1、2、3、4表示,單獨一捲售價8元, 具體折扣如下所示:
本數 折扣
2 5%
3 10%
4 20%
5 25%
根據購買的卷數以及本數,會對應不同折扣規則情況。單數一本書只會對應乙個折扣規則,例如購買了兩本卷1,一本卷2,則可以享受5%的折扣,另外一本卷一則不享受優惠。設計演算法能夠計算出讀者購買一批書的最低**。
2、實現思路:
買書6~10本的時候,我對這些情況進行了窮舉,(由於折扣價總是比單買一本便宜,一下買四本比分別買兩本便宜……所以將2拆成1+1,4拆成3+1、2+2等情況不計)
總數購買數
計算總價
65+1
8*5*75%+8*1
38
4+28*4*80%+8*2*95%
40.8
3+38*3*90%+8*3*90%
43.2
75+2
8*5*75%+8*2*95%
45.2
4+38*4*80%+8*3*90%
47.2
8
5+38*5*75%+8*3*90%
51.6
4+48*4*80%+8*4*80%
51.2
95+4
8*5*75%+8*4*80%
55.6
4+4+1
8*4*80%+8*4*80%+8
59.2
由表觀察可得,除了買8本時,分為兩個4本計算是最便宜外,其他情況下都是先扣除 5本一套才最便宜。
同理,書的數量不斷增加,依舊是這樣。因此,只要將書五本一套這樣分開,除了餘下3本的情況需要另算外,其他情況都按照5本的優惠來算,就應當是最優惠。
輸入要買的本數,要判斷輸入的是否合法;
通過除以5 取餘數來判斷應該用哪一種購買方式(上課時老師說是除以10,經過程式設計實踐發現,除以5 比較簡單一點);
按照最便宜的方式進行計算,並輸出。
4.源**:
15、執行結果://王永維,2016,5,31
2 #include3
using
namespace
std;
4int
main()520
if (num%5!=3)21
28else
if (danben==1)//
多處來一本,按照原價計算
2932
else
if (danben==2)//
多處來兩本,按照5%折扣計算
3336
else
//多處來四本,按照20%折扣計算
3740 cout<
最大優惠方法是:\t買
"套全套, 再買
"<5
<
本不同的單本
"<
41 cout<
最優惠的總價是:\t
"<
43else
//多處來三本,少買一套,其餘的八本按照4+4的20%折扣算
4450
return
0;
51 }
測試資料 1231
測試資料 sd213
測試資料 1231.23
6、總結分析:
這次的實驗,程式並不難,只是方法太難想到了!!都以為會有什麼特殊的演算法或是規律,結果真的就是只窮舉計算一部分,然後分類計算。。。
程式設計沒有太多時間,乙個多小時就搞定了,但這篇部落格用了我乙個多小時。。。。
專案日誌:
2016 5、31 9:30-11:40 編寫程式,修改,發布 約130min
買書最低價格
1 題目 n書店針對 哈利波特 系列書籍進行 活動,一共5卷,用編號0 1 2 3 4表示,單獨一捲售價8元,具體折扣如下所示 本數 2,折扣5 本數 3,折扣10 本數4 折扣20 本數5,折扣25 根據購買的卷數以及本數,會對應不同折扣規則情況。單數一本書只會對應乙個折扣規則,例如購買了兩本卷1...
購書最低價
題目 書店針對 哈利波特 系列書籍進行 活動,一共5卷,用編號0 1 2 3 4表示,單獨一捲售價8元,具體折扣如下所示 本數 折扣 2 5 3 10 4 20 5 25 根據購買的卷數以及本數,會對應不同折扣規則情況。單數一本書只會對應乙個折扣規則,例如購買了兩本卷1,一本卷2,則可以享受5 的折...
Python 機票最低價格趨勢查詢
本文獲取攜程的最低 並繪製趨勢圖。遇到的問題 找到資訊頁面位址後,用python requests.post模擬瀏覽器獲取資料,結果status code返回400。查詢原因,4xx錯誤的原因都來自於客戶端,大多都是客戶端傳送的請求與server要求不符。所以從headers中逐個排除,最後發現是由...