一、題目要求
書店針對《哈利波特》系列書籍進行**活動,一共5卷,用編號0、1、2、3、4表示,單獨一捲售價8元,具體折扣如下所示:
本數 折扣
2 5%
3 10%
4 20%
5 25%
根據購買的卷數以及本數,會對應不同折扣規則情況。單數一本書只會對應乙個折扣規則,例如購買了兩本卷1,一本卷2,則可以享受5%的折扣,另外一本卷一則不享受優惠。
設計演算法能夠計算出讀者購買一批書的最低**。
要求將設計思想、**實現、實現截圖、個人總結以博文的形式發表。(截止日期2015-4-15晚18:00)
二、設計思想
經過課上對題目的分析,發現當購買1~5本書時按**活動能以最低**購買;當購買6~9本時,除了購買8本這種情況是以4本、4本來買為最低**,其餘只要以買5本為先就能計算出最低**,所以對於13本,18本,23本。。。情況就得特殊考慮。首先以number是否等於3判斷,等於3按折扣直接計算最低**,否則再以(number%5+5)是否等於8兩種情況來考慮設計程式,若等於8則sum=2*4*8*0.8+(m-1)*8*5*0.75,其中m-1因為m=number/5這裡m包含了8中的乙個5,否則只要以買5本為先計算,再把n=number%5為1~4依次加上計算。
三、
#includevoid main()else
else
} } cout<
對於13本應該是5本.4本.4本買
對於18本應該是5本、5本、4本、4本買
五、總結
只要認真分析題目要求和題目中存在的規律,就可以用很簡潔的演算法設計出程式,再一次感覺到演算法對於程式的重要性。
設計演算法計算出二進位制數中1的個數
相信不少人都被問到過 如何設計乙個簡單的程式來判斷乙個二進位制數中1的個數有多少。問題雖簡單但卻有不同的解決方法,我自己發現了兩種比較常規的方法,並記錄於此 這種方法相信很多人只要稍加思索就可以想到,要想知道乙個二進位制數有多少個1,只要我們進行簡單的位操作,找出每一位具體是多少這樣,將1加到一起就...
設計乙個演算法,計算出n階乘中尾部零的個數
樣例 1 輸入 11 輸出 2 樣例解釋 11 39916800,結尾的0有2個。樣例 2 輸入 5 輸出 1 樣例解釋 5 120,結尾的0有1個。思想一 碰到這個問題可能首先想到的就是用乙個for迴圈得到n的階乘,然後在算出末尾有幾個零,這種思想只能在n的階乘在資料型別範圍內,才能正確。一旦n的...
尾部的零 設計乙個演算法,計算出n階乘中尾部零的個數
思路 乙個n的階乘未尾有多少個 0 取決於 1 到 n 的各個因子中 2 和 5 的個數,而2的個數是遠遠多於5的個數的,因此求出5的個數即可。題解中給出的求解因子 5 的個數的方法是用 n 不斷除以 5,直到結果為 0,然後把中間得到的結果累加.例如,100 5 20,20 5 4,4 5 0 則...