标签:div tar 斐波那契数列 scan else puts std scanf ++
题解:
听说叫斐波那契博弈。
先手必败当且仅当当前数目为斐波那契数列中的数。
代码:
#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; }
标签:div tar 斐波那契数列 scan else puts std scanf ++
原文地址:https://www.cnblogs.com/LiGuanlin1124/p/10351720.html