hdu2516 取石子游戏
Posted liguanlin1124
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu2516 取石子游戏相关的知识,希望对你有一定的参考价值。
题解:
听说叫斐波那契博弈。
先手必败当且仅当当前数目为斐波那契数列中的数。
代码:
#include<cstdio> struct Map { int hed[1050],cnt; struct EG { int to,nxt; }e[55]; void ae(int f,int t) { e[++cnt].to = t; e[cnt].nxt = hed[f]; hed[f] = cnt; } int find(int u) { for(int j=hed[u%1000];j;j=e[j].nxt) if(e[j].to==u)return 1; return 0; } }mp; int fib[55]; int main() { fib[0]=0,fib[1]=1; for(int i=2;;i++) { fib[i]=fib[i-2]+fib[i-1]; if(fib[i]>0)mp.ae(fib[i]%1000,fib[i]); else break; } int x; while(scanf("%d",&x)) { if(!x)break; puts(mp.find(x)?"Second win":"First win"); } return 0; }
以上是关于hdu2516 取石子游戏的主要内容,如果未能解决你的问题,请参考以下文章