2011 GDCPC Problem G Rats
给出N只老鼠,两种杀法:1,一次杀一只;2,奇数的话就杀(n-1)/2只,偶数的话就杀n/2只。
Alice和Bob轮流进行,Alice kill first。谁杀完最后一只老鼠者胜。
第一次见这样的博弈,其实是要用模拟的思想再加上博弈的思想。
#include"iostream" using namespace std; int main() { int t; cin>>t; while(t--) { int n; cin>>n; if(n==1) { cout<<"Alice"<<endl; continue; } if(n==2) { cout<<"Bob"<<endl; continue; } if(!(n&1)) { cout<<"Alice"<<endl; continue; } int count=0; while(n&1) { count++; n=(n+1)/2; } if(n==2) { if(count&1) cout<<"Alice"<<endl; else cout<<"Bob"<<endl; } else { if(count&1) cout<<"Bob"<<endl; else cout<<"Alice"<<endl; } } return 0; }