題意:spa
有N堆石頭,最多拿k個,Adrien先拿,Austin後拿,最後拿完的人獲勝code
又被一道很簡單的博弈題(思惟題)卡了半天....blog
思路:io
首先k=1的時候,則獲勝與堆數奇偶相關。
k!=1的時候,因爲Adrien先拿,因此他能夠取中間部分把堆分紅兩部分。
這樣只要對手拿什麼,他在另外一個區間進行相同操做便可(對稱操做),這樣他就能保證本身可以最後拿完
注意還要特判n==0的狀況,這時候Austin必贏。class
#include <cstdio> using namespace std; int main(){ int n,k; scanf("%d%d",&n,&k); if(n==0) puts("Austin"); else if(k>1) puts("Adrien"); else { if(n&1) puts("Adrien"); else puts("Austin"); } }