石子游戏stone
#include<iostream> using namespace std; int main() { int t,N;//t为几组,N为几堆 cin>>t; while(t--) { int win=0; //更新 cin>>N; int n,m;//m为每堆数量,n为每堆可取的最大数量 while(N--) { cin>>m>>n; m=m%(n+1); win^=m; } if(win) { cout<<"Alice"<<" "; } else { cout<<"Bob"<<" "; } } return 0; }
这个题目和Nim博弈基本一样,只是每个石子堆有自己的最大取子数,只需要将每个石子堆的石子数量m更新为m%(n+1)