題目鏈接:http://pat.zju.edu.cn/contests/ds/2-10
P個海盜偷了D顆鉆石后來到公海分贓,一致同意如下分贓策略:
首先,P個海盜通過抽簽決定1-P的序號。然后由第1號海盜提出一個分配方案(方案應給出每個海盜分得的具體數量),如果能夠得到包括1號在內的絕對多數(即大于半數)同意,則按照該分配方案執行,否則1號將被投入大海喂鯊魚;而后依次類似地由第2號、第3號等等海盜提出方案,直到能夠獲得絕對多數同意的方案出現為止,或者只剩下最后一位海盜,其獨占所有鉆石。請編寫一個程序,給出第1號海盜的鉆石分配方案中自己分得的鉆石數量。
附帶的三個假定:
1) “聰明”與“貪婪”假定:每個海盜總能夠以本人利益最大化作為行為準則;
2) “人性化”假定:在能夠取得盡量多鉆石的情況下,海盜不會故意致同伙于死地;
3) “無偏見”假定:海盜之間沒有個人恩怨,分給其他海盜鉆石的次序以小序號優先為原則。
輸入格式說明:
輸入2個正整數D和P(3<=P<=D<=100)。
輸出格式說明:
輸出第1號海盜的鉆石分配方案中自己分得的鉆石數量。
樣例輸入與輸出:
序號 | 輸入 | 輸出 |
1 |
10 7 |
6 |
2 |
3 3 |
2 |
3 |
100 3 |
99 |
4 |
100 100 |
49 |
PS:
當只有三個海盜的時候需要特判,因為只有三個海盜的時候,第一號只需要給另外兩個人中的一個人一顆鉆石就可以了! 其余時候均需給一半的海盜中的其中一人兩顆鉆石,一半中的另外的海盜每人一顆鉆石!
代碼如下: