51nod 1068 Bash遊戲 V3 博弈

2022-04-17 10:41:03 字數 2226 閱讀 1295

1068 bash遊戲 v3

基準時間限制: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示例

323

4

output示例

aba

2的冪看上去很厲害的樣子,然而這題還是屬於bash博弈的變形,所以做法還是打表找規律

然後發現只要是3的倍數就是b贏

不過這題有個問題,就是會有大數,然後我就直接套了個大數模板 其實想起來只要每一位去除3看可不可以就行了 不過也懶得改了

#include #include #include #include #include #include #include #include #include using namespace std;

#define fin freopen("input.txt","r",stdin);

#define fout freopen("output.txt","w",stdout);

#define inf 0x3f3f3f3f

#define infll 0x3f3f3f3f3f3f3f

#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

typedef long long ll;

typedef pairpii;

using namespace std;

const int mx = 2500;

const int maxn = 9999;

const int dlen = 4;

/*已過載》+- % 和print*/

class big

a[len++] = d;

}big(const char *s)

a[index++] = t;}}

big operator/(const int &b)const

ret.len = len;

while(ret.a[ret.len - 1] == 0 && ret.len > 1) ret.len--;

return ret;

}bool operator>(const big &t)const else return false;

}big operator+(const big &t)const

}if(t.a[big] != 0) t.len = big + 1;

else t.len = big;

return t;

}big operator-(const big &t)const else

big = t1.len;

for(i = 0; i < big; i++) else t1.a[i] -= t2.a[i];

}t1.len = big;

while(t1.a[t1.len - 1] == 0 && t1.len > 1)

if(flag) t1.a[big - 1] = 0 - t1.a[big - 1];

return t1;

}int operator%(const int &b)const

return d;

}big operator*(const big &t) const else

}if(up != 0)

}ret.len = i + j;

while(ret.a[ret.len - 1] == 0 && ret.len > 1) ret.len--;

return ret;

}void print()

};int main()

return 0;

}

51nod 1066 Bash遊戲 Bash博弈

1066 bash遊戲 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 收藏關注有一堆石子共有n個。a b兩個人輪流拿,a先拿。每次最少拿1顆,最多拿k顆,拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出n和k,問最後誰能贏得比賽。例如n ...

51nod 1066 Bash遊戲 博弈

1066 bash遊戲 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 有一堆石子共有n個。a b兩個人輪流拿,a先拿。每次最少拿1顆,最多拿k顆,拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出n和k,問最後誰能贏得比賽。例如n 3,k ...

51Nod 1066 Bash遊戲(博弈)

基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 有一堆石子共有n個。a b兩個人輪流拿,a先拿。每次最少拿1顆,最多拿k顆,拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出n和k,問最後誰能贏得比賽。例如n 3,k 2。無論a如何拿,b都可...