首页 > 代码库 > HDU 1517 A Multiplication Game(博弈论)
HDU 1517 A Multiplication Game(博弈论)
题目地址:HDU 1517
NP状态转换。
可以把题目的向上乘变成向下除。这样1是终结状态,设1的时候为必败点。
根据所有能一步到达必败点的点是必胜点,所以[x,x*9]必胜点;根据只能到达必胜点的点是必败点,所以[x*9+1,x*9*2]是必败点.
然后求解。
代码如下:
#include <iostream> #include <cstdio> #include <string> #include <cstring> #include <stdlib.h> #include <math.h> #include <ctype.h> #include <queue> #include <map> #include <set> #include <algorithm> using namespace std; #define LL __int64 int main() { LL n, x; int f; while(scanf("%I64d",&n)!=EOF) { x=1; f=0; while(x<n) { if(!f) x*=9; else x*=2; f=1-f; } if(!f) puts("Ollie wins."); else puts("Stan wins."); } return 0; }
HDU 1517 A Multiplication Game(博弈论)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。