(step8.2.6)hdu 1848(Fibonacci again and again——组合博弈)
2024-08-20 11:00:13
题目大意:输入3个整数m,n,p,分别表示3堆石头中的石头个数
解题思路:
1)斐波那契数列的第16个数fib[16] == 1597
2)(sg[m]^sg[n]^sg[p]) 。一定要加括号,否则会WA
代码如下:
/*
* 1848_1.cpp
*
* Created on: 2013年9月1日
* Author: Administrator
*/ #include <iostream> using namespace std; const int maxn = 1001;
int sg[maxn];
int f[maxn];
int hash[maxn]; void getSG(int n){ int i,j;
memset(sg,0,sizeof(sg));
for(i = 1 ; i<= n ; ++i){
memset(hash,0,sizeof(hash));
for(j = 1 ; f[j] <= i ; ++j ){
hash[sg[i-f[j]]] = 1;
} for(j = 0 ; j <= n ; ++j){
if(hash[j] == 0){
sg[i] = j;
break;
}
}
}
} int main(){
int m,n,p; f[0] = 1;
f[1] = 1;
int i ;
for(i = 2 ; i <= 16 ; ++i){//这里之所以取16是因为fib[16] 已经是 1597,已经大于n的最大值
f[i] = f[i - 1] + f[i - 2];
}
getSG(1000);
while(scanf("%d%d%d",&m,&n,&p)!=EOF,m||n||p){
if((sg[m]^sg[n]^sg[p]) == 0){//sg[m]^sg[n]^sg[p]外面别忘了加括号(),否则会WA
printf("Nacci\n");
}else{
printf("Fibo\n");
}
}
}
最新文章
- lvs源代码分析
- Spark Streaming源码解读之Driver中ReceiverTracker架构设计以具体实现彻底研究
- 电脑公司最新GHOST WIN7系统32,64位优化精简版下载
- get和post的区别与乱码问题解决
- PowerDesigner实用技巧小结(3)
- 运用linq查找所有重复的元素
- eclipse 重构功能。
- WebApi2官网学习记录---Content Negotiation
- 横瓜从WP7与WP8不兼容之处预测微软公司在未来20年将会倒闭
- Spring Security教程系列(一)基础篇-1
- js函数整合队列顺序执行插件
- Mysql_存储过程
- tnsping 不通
- java基础_0204:运算符
- Groovy与Java集成常见的坑
- HDU.1529.Cashier Employment(差分约束 最长路SPFA)
- Ubuntu下orbbec mini 无法正常显示图像问题
- [Robot Framework] 执行时报 webdriver 异常
- C++学习记录(留坑)
- 第76天:jQuery中的宽高
热门文章
- 文件下载 .net
- 关于php析构函数__destruct()的问题
- Android中图片处理相关问题
- Java学习02
- BZOJ 1642: [Usaco2007 Nov]Milking Time 挤奶时间( dp )
- Chrome Firefox 自定义背景色
- Delphi 中 COM 实现研究手记(一)
- 投票系统前台 C#,数据库SQL
- 自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
- Vijos P1067Warcraft III 守望者的烦恼