1. 程式人生 > >1068 Bash遊戲 V3

1068 Bash遊戲 V3

num mes ext ural nod name http 的人 可能

1068 Bash遊戲 V3技術分享 題目來源: Ural 1180 基準時間限制:1 秒 空間限制:131072 KB 分值: 20 難度:3級算法題 技術分享 收藏 技術分享 關註 有一堆石子共有N個。A B兩個人輪流拿,A先拿。每次拿的數量只能是2的正整數次冪,比如(1,2,4,8,16....),拿到最後1顆石子的人獲勝。假設A B都非常聰明,拿石子的過程中不會出現失誤。給出N,問最後誰能贏得比賽。 例如N = 3。A只能拿1顆或2顆,所以B可以拿到最後1顆石子。(輸入的N可能為大數) Input
第1行:一個數T,表示後面用作輸入測試的數的數量。(1 <= T <= 1000)
第2 - T + 1行:每行1個數N。(1 <= N <= 10^1000)
Output
共T行,如果A獲勝輸出A,如果B獲勝輸出B。
Input示例
3
2
3
4
Output示例
A
B
A
【思路】
博弈
找規律。。。
A B B A B B
以3為一組循環。
註意n特別大,判斷n是否是3的倍數時,轉換成字符串輸入,把每位相加看看是否是3的倍數。
【代碼】
#include<iostream>
#include<cstdio>
using namespace std;
long long n;
string s;
long long sum;
int main()
{
    scanf("%lld",&n);
    for(int i=1
;i<=n;i++) { cin>>s;sum=0; for(int i=0;i<s.length();i++) sum+=s[i]-0; if(sum%3==0) printf("B\n"); else printf("A\n"); } return 0; }

1068 Bash遊戲 V3