2012第三屆藍橋杯C B組第十題 取球博弈

2021-08-17 23:15:28 字數 1307 閱讀 8624

取球博弈

今盒子裡有n個小球,a、b兩人輪流從盒中取球,每個人都可以看到另乙個人取了多少個,也可以看到盒中還剩下多少個,並且兩人都很聰明,不會做出錯誤的判斷。

我們約定:

每個人從盒子中取出的球的數目必須是:1,3,7或者8個。

輪到某一方取球時不能棄權!

a先取球,然後雙方交替取球,直到取完。

被迫拿到最後乙個球的一方為負方(輸方)

請程式設計確定出在雙方都不判斷失誤的情況下,對於特定的初始球數,a是否能贏?

程式執行時,從標準輸入獲得資料,其格式如下:

先是乙個整數n(n<100),表示接下來有n個整數。然後是n個整數,每個佔一行(整數<10000),表示初始球數。

程式則輸出n行,表示a的輸贏情況(輸為0,贏為1)。

例如,使用者輸入:41

21018則程式應該輸出:01

10注意:請仔細除錯!您的程式只有能執行出正確結果的時候才有機會得分!

在評卷時使用的輸入資料與試卷中給出的例項資料可能是不同的。

請把所有函式寫在同乙個檔案中,除錯好後,存入與【考生資料夾】下對應題號的「解答.txt」中即可。

相關的工程檔案不要拷入。

源**中不能能使用諸如繪圖、win32api、中斷呼叫、硬體操作或與作業系統相關的api。

允許使用stl類庫,但不能使用mfc或atl等非ansi c++標準的類庫。例如,不能使用cstring型別(屬於mfc類庫)。

**2
// 取球博弈

#include

using

namespace

std;

int n;

int an[10010];

map imp;

bool f(int n)

void xf()

for(int i=0;icout

<< an[i] << endl;

}int main()

**1
// 取球博弈

#include

using

namespace

std;

int n;

int an[110];

int dfs(int n,int k)

else else

return !k;

}}void init()

}void print()

}int main()

貼上大佬的解法:

2023年第三屆藍橋杯省賽C B組J題

今盒子裡有n個小球,a b兩人輪流從盒中取球,每個人都可以看到另乙個人取了多少個,也可以看到盒中還剩下多少個,並且兩人都很聰明,不會做出錯誤的判斷。我們約定 每個人從盒子中取出的球的數目必須是 1,3,7或者8個。輪到某一方取球時不能棄權!a先取球,然後雙方交替取球,直到取完。被迫拿到最後乙個球的一...

2023年藍橋杯B組初賽(第三屆)

1.兩種生物 2.填數字 暴力 答案 219783.海盜喝酒 include int main 4.電視答題 開乙個十層的迴圈,由於每種情況只有兩種選擇,所以這種方式是可行的。include int main if mark 100 return0 第五題 矩陣的轉置 實現把矩陣順時針旋轉 答案 r...

2012第三屆藍橋杯預賽題

1.微生物增殖 用每半分鐘作為乙個增長量 假設有兩種微生物 x 和 y x出生後每隔3分鐘 一次 數目加倍 y出生後每隔2分鐘 一次 數目加倍 乙個新出生的x,半分鐘之後吃掉1個y,並且,從此開始,每隔1分鐘吃1個y。現在已知有新出生的 x 10,y 89,求60分鐘後y的數目。如果x 10,y 9...