题目链接

题意

三堆石子,分别为\(m,n,p\)个,两人依次取石子,每次只能在一堆当中取,并且取的个数只能是斐波那契数。最后没石子可取的人为负。问先手会赢还是会输?

思路

直接按定义计算\(SG\)函数。

Code

#include <bits/stdc++.h>
#define maxn 1000
using namespace std;
typedef long long LL;
int f[maxn+10], sg[maxn+10];
bool vis[maxn+10];
void init() {
f[0] = f[1] = 1;
int i = 2;
for (; i <= maxn && f[i-1] < maxn ; ++i) f[i] = f[i-1] + f[i-2];
int tot = i-1;
sg[0] = 0;
for (int i = 1; i <= maxn; ++i) {
memset(vis, 0, sizeof(vis));
for (int j = 0; j < tot && i >= f[j]; ++j) vis[sg[i-f[j]]] = true;
for (int j = 0; j <= maxn; ++j) { if (!vis[j]) {sg[i] = j; break; } }
}
}
int n, m, p;
void work() {
if (sg[n]^sg[m]^sg[p]) puts("Fibo");
else puts("Nacci");
}
int main() {
init();
while (scanf("%d%d%d", &n, &m, &p) != EOF && n&&m&&p) work();
return 0;
}

最新文章

  1. ExtJS学习之路第五步:认识最常见组件Panel
  2. onConfigurationChanged is not called&amp;&amp; 翻转屏幕不执行onConfigurationChanged方法&amp;&amp;onConfigurationChanged不执行
  3. 记一个JAVA关于日期的坑
  4. python无私有成员变量
  5. python命令行参数处理
  6. leetcode[90] Decode Ways
  7. python enumerate 枚举函数用法
  8. IPsec_VPN实现技术【转载】
  9. Android Studio提交库至Bintray jCenter从入门到放弃
  10. wordpress 角色权限
  11. spring的事件驱动模型
  12. python中的单向链表实现
  13. 安装sqlserver后 服务启动过几秒就自动停止
  14. java设计模式-责任链
  15. Docker容器学习与分享10
  16. sql左右连接测试
  17. #C++初学记录(算法2)
  18. 深入理解JVM之JVM内存区域与内存分配
  19. JSON_EXTRACT查询mysql中的{}和 [{},{}中的值]
  20. oracle中的异常处理方法

热门文章

  1. shell与python判断文件是否存在
  2. phpstrom怎样显示类的方法或函数列表
  3. java问题随笔
  4. 4 Template层-验证码
  5. python django 路由系统
  6. loj2065 「SDOI2016」模式字符串
  7. Android TV 开发(4)
  8. SQL语句Not IN优化方案
  9. day05_07 标志位讲解
  10. icpc南昌邀请赛 比赛总结