A mutiplication game poj-2505
题目大意:给定一个数n和p,两个选手每次可以将p乘上[2,9]。最先使得p大于n的选手胜利。
注释:$1le nle 4294967295$,$p=1$。
想法:
这个题比较新颖,我们可以直接推出必败态区间。
最后,附上丑陋的代码... ...
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int main() { int n; while(cin>>n) { bool count=false; while(n>9||count==true) { if(count%2==0) n=(n%9!=0)?n/9+1:n/9; else n=(n%2!=0)?n/2+1:n/2; count=!count; } if(n!=1) cout<<"Stan wins."<<endl; else cout<<"Ollie wins."<<endl; } }
小结:好题。