POJ_2505 A multiplication game(博弈,range)
来源:互联网 发布:手机看图纸软件 编辑:程序博客网 时间:2024/06/05 15:31
题目请点我
题解:
这道题是遇到的第一道相乘的题目,考虑的是谁能先大于等于N。对于这类题目,我觉得不太容易像Nim游戏一样找到一个平衡状态。从必胜态和必败态去考虑,我们转化为一个找每个人必能达到的范围的问题。首先,对于先手来说,2~9为必胜区间,不管先手如何,后手所能达到的最小值是18,所以后手的必胜区间是10~18。之后依次类推,每次在考虑临界值的时候,每个人都是希望自己能更大,而对手是希望更小,两个人分开去考虑,所以按照自己每次乘9,对手乘2来考虑临界区间。
所以有以下结果,符合结论:
1~9 ->Stan;
10~18=2*9->Ollie;
19~162=9*2*9->Stan;
163~324=2*9*2*9->Ollie;
…
代码实现:
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#define LL long longusing namespace std;LL N;LL range;int main(){ while( cin>>N ){ range = 1; int flag = 1; while( range < N ){ if( flag ){ range *= 9; flag = 0; } else{ range *= 2; flag = 1; } } if( !flag ){ cout<<"Stan wins."<<endl; } else{ cout<<"Ollie wins."<<endl; } } return 0;}
0 0
- POJ_2505 A multiplication game(博弈,range)
- A Multiplication Game + 博弈
- [博弈] A Multiplication Game
- A Multiplication Game 博弈
- A Multiplication Game (博弈)
- poj 2505 A multiplication game(博弈)
- hdu 1517 - A Multiplication Game(博弈)
- HDU(1517)A Multiplication Game(博弈)
- UVA 847 - A Multiplication Game(博弈)
- poj 2505 A multiplication game(博弈)
- A Multiplication Game - HDU 1517 博弈
- A Multiplication Game 1517 (博弈+规律)
- HDU 1517A Multiplication Game 小聪明博弈
- HDU 1517 A Multiplication Game(博弈)
- HDU 1517 A Multiplication Game(博弈)
- POJ 2505 A multiplication game(博弈)
- HDU 1517 A Multiplication Game [。。]【博弈】
- hdoj 1517 A Multiplication Game(博弈)
- 华为OJ(查找两个字符串a,b中的最长公共子串)
- 导入库和静态库
- ios开发技巧
- MDI窗口点击节点报错问题
- 二叉树相关
- POJ_2505 A multiplication game(博弈,range)
- 创建一个用了OpenGL的ndk Android项目
- 洗牌和发牌算法
- 修改自定义key store 别名和密码
- Num 39 : HDOJ : 2030 汉字统计 [ 汉字的字符处理 ] [ 转载 ]
- Android AIDL Service 跨进程传递复杂数据
- android:设置密码隐藏与显示
- js this
- IOS 笔记 《一》:内存管理