博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU-2516-取石子游戏
阅读量:4465 次
发布时间:2019-06-08

本文共 827 字,大约阅读时间需要 2 分钟。

题目链接

题目不难想出来,对于这样的博弈题,多算几个测试用例,找规律即可,2  3  5  8  13 。。。。。是必败点,

开始我我只想开一个2^31的数组,我想的太天真了,不用想是愚蠢的,开这么大干嘛,可以看看第几个斐波那契超过了2^31可以了,在枚举每一个,即可

具体看代码

先找几个斐波那契超过了2^31

#include<stdio.h>

int main(void)
{
int a[100];
int i;
a[0]=2; a[1]=3;
for(i=2;i<=100;i++)
{
a[i]=a[i-1]+a[i-2];
if(a[i]<0)
break;
}
printf("%d %d\n",a[i-1],i);
return 0;
}

 

 

 

 

可以看到

output

1836311903 44

Process returned 0 (0x0) execution time : 0.271 s

Press any key to continue.

 

最大的为1836311903 第44即可,所以数组开45就可以了。

看我的代码

#include<stdio.h>

int main(void)
{
int a[50];
int i,n;
a[0]=2; a[1]=3;
for(i=2;i<45;i++)
a[i]=a[i-1]+a[i-2];
while(scanf("%d",&n)==1&&n)
{
for(i=0;i<45;i++)
if(a[i]==n)
break;
if(i<45)
printf("Second win\n");
else
printf("First win\n");
}
return 0;
}

 

 

总结:

这个题最大的亮点,是判断,最大的却不超过2^31 的斐波那契在第几项。

开始,我没想到。这个可以记住的。

 

转载于:https://www.cnblogs.com/liudehao/p/3989345.html

你可能感兴趣的文章
leetcode中的python学习
查看>>
sqlserver打开对象资源管理器管理的帮助文档的快捷键
查看>>
JBOSSAS 5.x/6.x 反序列化命令执行漏洞(CVE-2017-12149)
查看>>
Zookeeper zkui-zookeeper图形化管理工具
查看>>
java运行时内存分类
查看>>
为什么说 Git 比 SVN 更好
查看>>
1.基础数据类型的初识 字符串 bool 整型 if else elif
查看>>
【设计模式】4、原型模式
查看>>
进入meta模式关闭背光灯
查看>>
webstorm上svn的安装使用
查看>>
【JEECG技术文档】数据权限自定义SQL表达式用法说明
查看>>
使用 Bootstrap Typeahead 组件
查看>>
linux_cacti 配置之 安装snmp 服务
查看>>
201407-至今
查看>>
c# 应用事务
查看>>
优化杭州某著名电子商务网站高并发千万级大型数据库经验之- SQL语句优化(转)...
查看>>
WPF——TargetNullValue(如何在绑定空值显示默认字符)
查看>>
Linux之crontab
查看>>
清除浮动
查看>>
CenOS+宝塔(模拟)上线博客项目
查看>>