http://poj.org/problem?id=2505
感觉博弈论只有找规律的印象已经在我心中埋下了种子。。。
题目大意:两个人轮流玩游戏,Stan先手,数字 p从1开始,Stan乘以一个2-9的数,然后Ollie再乘以一个2-9的数,直到谁先将p乘到p>=n时那个人就赢了,而且轮到某人时,某人必须乘以2-9的一个数。
题目大意来源http://blog.csdn.net/jc514984625/article/details/71157698
因为谷歌翻译太难懂了,所以总是找题解找题目大意,药丸。
这是一道规律题QAQ(其实看上去很高级的sg函数写法也是找规律),对Stan和Ollie的必胜数字区间的枚举可以发现必胜区间的规律。
一点无关的感慨:这种单纯找规律就好好找规律好了,找到规律还要理性分析的结果是不仅会怀疑人生还会浪费很多时间最后什么也没有学到。(甚至还可能因为I64d挂掉(滑稽))
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<cmath> 5 #include<iostream> 6 #include<map> 7 using namespace std; 8 long long m; 9 int main(){ 10 while(~scanf("%lld",&m)){ 11 long long w=9; 12 for(int i=1;;i++){ 13 if(w>=m){ 14 if(i&1){ 15 printf("Stan wins.\n"); 16 }else{ 17 printf("Ollie wins.\n"); 18 } 19 break; 20 } 21 if(i&1) w*=2; 22 else w*=9; 23 } 24 } 25 return 0; 26 }