換瓶蓋問題

2021-10-24 12:31:40 字數 573 閱讀 9619

問題:你有k瓶可樂,兌換規則為每a個瓶蓋可以換一瓶可樂,問總共可以和多少瓶可樂?

方法一:數學方法

a個瓶蓋換一瓶可樂:

相當於可以用a-1個瓶蓋,兌換一瓶無蓋的可樂;

例如a為3的時候,當有(3-1)個瓶蓋的時候,可以向商家『借』乙個瓶蓋湊齊3個滿足了規則換來一瓶可樂,然後將瓶蓋還給商家。

那麼結果是不是 k/(a-1)呢?不對

假設 x%(a-1) == 0,則最後乙個(a-1)不能兌換乙個沒蓋子的可樂,需要a個才能換乙個沒蓋子的可樂。因為這個交換本質上是「透支的」,而這個交換只有在剩餘的蓋子數大於a的時候才能進行,所以最後一次交換至少剩餘乙個蓋子,所以最後乙個蓋子本質上沒有用;

因此可以喝 a + (a-1)/(k-1);

方法二:迴圈寫法

// 可樂換瓶蓋;共有 n 元錢, 每瓶m元,每k個瓶蓋兌一瓶;

public static int exchange(int n, int m, int k)

return total;

}

瓶子瓶蓋換酒問題

兩塊錢一瓶啤酒,四個蓋子可以換一瓶啤酒。2個瓶子可以換一瓶啤酒。問 如果手上有20塊錢,一共喝了多少瓶啤酒?拿所有的瓶子去換酒,更新瓶蓋數 更新瓶子數 更新總數 然後瓶蓋能換酒就一直換 更新瓶子數 更新瓶蓋數 更新總數class wine system.out.println result 把酒喝完...

瓶蓋換可樂問題非迴圈寫法

假設有x瓶可樂,a個蓋子可以換一瓶可樂。問最後能換多少瓶可樂。a個蓋子換一瓶可樂,可以簡化成 a 1個蓋子換一瓶不帶蓋子的可樂。那麼初始有x個蓋子,不就直接能換x a 1 瓶可樂嗎?但是注意到一點,假設 x a 1 0,最後乙個 a 1 不能換乙個沒蓋子的可樂,需要a個蓋子才能換乙個沒蓋子的可樂。因...

最少換站問題

n個地點間有多條地鐵線。求最小換站次數。思路 給每一條地鐵線增加乙個匯點 連通該條線上的所有站點 圖建好後就是寬度優先搜尋了。例題 鄭輕玲瓏杯2130 hipercijevi,類似的題有河南省第八屆程式設計 最少換成 下面 用前向星實現,點實在太多了。裡面那個內聯函式是為了提高讀取速度的。若把rea...