hdu 1848 Fibonacci again and again 组合游戏 SG函数
2024-09-06 17:06:56
题目链接
题意
三堆石子,分别为\(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;
}
最新文章
- ExtJS学习之路第五步:认识最常见组件Panel
- onConfigurationChanged is not called&;&; 翻转屏幕不执行onConfigurationChanged方法&;&;onConfigurationChanged不执行
- 记一个JAVA关于日期的坑
- python无私有成员变量
- python命令行参数处理
- leetcode[90] Decode Ways
- python enumerate 枚举函数用法
- IPsec_VPN实现技术【转载】
- Android Studio提交库至Bintray jCenter从入门到放弃
- wordpress 角色权限
- spring的事件驱动模型
- python中的单向链表实现
- 安装sqlserver后 服务启动过几秒就自动停止
- java设计模式-责任链
- Docker容器学习与分享10
- sql左右连接测试
- #C++初学记录(算法2)
- 深入理解JVM之JVM内存区域与内存分配
- JSON_EXTRACT查询mysql中的{}和 [{},{}中的值]
- oracle中的异常处理方法