1. 程式人生 > >1070 Bash遊戲 V4

1070 Bash遊戲 V4

tar 一個數 col pid display ros () 一次 lis

1070 Bash遊戲 V4 基準時間限制:1 秒 空間限制:131072 KB 分值: 40 難度:4級算法題 有一堆石子共有N個。A B兩個人輪流拿,A先拿。每次拿的數量最少1個,最多不超過對手上一次拿的數量的2倍(A第1次拿時要求不能全拿走)。拿到最後1顆石子的人獲勝。假設A B都非常聰明,拿石子的過程中不會出現失誤。給出N,問最後誰能贏得比賽。 例如N = 3。A只能拿1顆或2顆,所以B可以拿到最後1顆石子。 Input
第1行:一個數T,表示後面用作輸入測試的數的數量。(1 <= T <= 1000)
第2 - T + 1行:每行1個數N。(1 <= N <= 10^9)
Output
共T行,如果A獲勝輸出A,如果B獲勝輸出B。
Input示例
3
2
3
4
Output示例
B
B
A



//標準的斐波那契博弈?不知道什麽,但是找規律還是會的。。
http://blog.csdn.net/dgq8211/article/details/7602807
技術分享
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 #define INF 0x3f3f3f3f
 4 #define eps 1e-9
 5 #define LL long long
 6 #define MX 85
 7
8 int n; 9 LL feb[MX]; 10 11 int main() 12 { 13 feb[1]=1, feb[2]=2; 14 for (int i=3;i<MX;i++) 15 feb[i]=feb[i-1]+feb[i-2]; 16 int T; 17 scanf("%d",&T); 18 while (T--) 19 { 20 scanf("%d",&n); 21 int dex = lower_bound(feb+1,feb+MX,n)-feb;
22 if (feb[dex]==n) 23 printf("B\n"); 24 else 25 printf("A\n"); 26 } 27 28 return 0; 29 }
View Code




1070 Bash遊戲 V4