Public Sale(巴什博弈)

Description

雖然不想,但是現實總歸是現實,Lele始終沒有逃過退學的命運,因爲他沒有拿到獎學金。現在等待他的,就是像FarmJohn一樣的農田生涯。 

要種田得有田纔行,Lele聽說街上正在舉行一場別開生面的拍賣會,拍賣的物品正好就是一塊20畝的田地。於是,Lele帶上他的全部積蓄,衝往拍賣會。 

後來發現,整個拍賣會只有Lele和他的死對頭Yueyue。 

通過打聽,Lele知道這場拍賣的規則是這樣的:剛開始底價爲0,兩個人輪流開始加價,不過每次加價的幅度要在1~N之間,當價格大於或等於田地的成本價 M 時,主辦方就把這塊田地賣給這次叫價的人。 

Lele和Yueyue雖然考試不行,但是對拍賣卻十分精通,而且他們兩個人都十分想得到這塊田地。所以他們每次都是選對自己最有利的方式進行加價。 

由於Lele字典序比Yueyue靠前,所以每次都是由Lele先開始加價,請問,第一次加價的時候, 
Lele要出多少才能保證自己買得到這塊地呢? 
 

Input

本題目包含多組測試,請處理到文件結束(EOF)。每組測試佔一行。 
每組測試包含兩個整數M和N(含義見題目描述,0<N,M<1100) 
 

Output

對於每組數據,在一行裏按遞增的順序輸出Lele第一次可以加的價。兩個數據之間用空格隔開。 
如果Lele在第一次無論如何出價都無法買到這塊土地,就輸出"none"。 
 

Sample Input

4 2 3 2 3 5
 

Sample Output

1 none 3 4 5

解題思路:

巴什博弈基本題。

AC代碼:

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
    int n, m;
    while(scanf("%d%d", &m, &n) != EOF)
    {
        if(m % (n + 1))
        {
            if(m / (n + 1) == 0)
                for(int i = m; i <=n; i++)
                i == n ? printf("%d\n", i) : printf("%d ", i);
            else
                printf("%d\n", m % (n + 1));
        }
        else
            printf("none\n");
    }
    return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章