hdu 1517 A Multiplication Game 博弈论
思路:求必胜区间和必败区间!
1-9 先手胜
10-2*9后手胜
19-2*9*9先手胜
163-2*2*9*9后手胜
……
易知右区间按9,2交替出现的,所以每次除以18,直到小于18时就可以直接判断了。
代码如下:
1 #include<cstdio> 2 int main() 3 { 4 double n; 5 while(scanf("%lf",&n)!=EOF){ 6 while(n>18) n/=18; 7 if(n<=9) puts("Stan wins."); 8 else puts("Ollie wins."); 9 } 10 return 0; 11 }