1. 程式人生 > >51Nod 1067 Bash博弈V2

51Nod 1067 Bash博弈V2

這道題告訴我,一定要去嘗試,去推算,不要動不動就找度娘要答案。(慚愧慚愧)

既然是博弈問題,按理我們應該找出規律,怎麼找呢,推,把前幾項寫出來找規律,動手很重要。

上題:

1067 Bash遊戲 V2 基準時間限制:1 秒 空間限制:131072 KB 分值: 10  難度:2級演算法題  收藏  關注 有一堆石子共有N個。A B兩個人輪流拿,A先拿。每次只能拿1,3,4顆,拿到最後1顆石子的人獲勝。假設A B都非常聰明,拿石子的過程中不會出現失誤。給出N,問最後誰能贏得比賽。 例如N = 2。A只能拿1顆,所以B可以拿到最後1顆石子。 Input
第1行:一個數T,表示後面用作輸入測試的數的數量。(1 <= T <= 10000)
第2 - T + 1行:每行1個數N。(1 <= N <= 10^9)
Output
共T行,如果A獲勝輸出A,如果B獲勝輸出B。
Input示例
3
2
3
4
Output示例
B
A
A
首先可以看出2.是一個必敗點, 接著是 5   因為5 無論取 1 2 4 什麼值,都無法是對手面對奇異局勢, 接著是7,9 ,11 ,16 自己就可以看出規律 +2 + 5 +2 + 5。

然後就可以解題了:

#include<cstdio>
int main()
{
	int t;
	scanf("%d",&t);
	while(t--){
		int x;
		scanf("%d",&x);
		if(x%7==0||x%7==2||x==2) printf("B\n");
		else printf("A\n");
	}
 } 
本人實力有限,如有錯誤望多多指教,謝謝。