ZOJ2290_Game
题目意思是这样的,给定一个数N,第一个可以减去任意一个数(不能为N本身),然后接下来轮流减去一个数字,下一个人减去的数字必须大于0,且不大于2倍上一次被减去的数字。
把N减为0的人获胜。
看完题目后不会做,果断就上午找题解了。
原来如此啊。。。。 首先我们可以打个表(在30的范围以内),就可以发现必败态是N为斐波那契数。
也就是说如果给定的数字不是一个斐波那契额数,那么就是必胜的。
接下来的问题是如何找到一个第一次减小的最小的数字呢?
可以递归找,每次都找最近的,知道恰好等于一个斐波那契数为止。
#include <iostream>
#include <cstdio>
#include <cstring>
#define inf (unsigned)(~0U)
using namespace std; unsigned a[],n,ans; unsigned count(unsigned x)
{
int k=;
for (; a[k+]<=x && k<=; k++);
if (a[k]==x) return x;
else return count(x-a[k]);
} int main()
{
a[]=;a[]=;a[]=;
for (unsigned k=; inf-a[k]>=a[k-]; k++) a[k+]=a[k]+a[k-];
while (cin>>n)
{
for (ans=; a[ans+]<=n && ans<=; ans++);
if (n==a[ans]) cout<<"lose\n";
else cout<<count(n-a[ans])<<endl;
}
return ;
}
ZOJ2290_Game的更多相关文章
随机推荐
- 预备作业03:虚拟机安装及Linux操作系统练习
安装虚拟机 安装时遇到的问题 在打开虚拟机时出现以下问题: 经查询该问题只需要更改其兼容性,使其"以管理员身份运行". 常用的Linux命令 $ who am i:查看当前伪终端的 ...
- 20145207 java第二周学习总结
教材学习内容总结 这部分可能要扒一些课本而上的东西了.在第三章中,知道了Java可区分为基本类型和类类型两大类型系统,其中类类型也称为参考类型.在这一周主要学习了类类型. 对象(Object):存在的 ...
- Oracle下如何设置 log_archive_dest
一:存在 DB_RECOVERY_FILE_DEST 时,如何设置 LOG_ARCHIVE_DEST: SQL> archive log listデータベース・ログ・モード アーカイブ・モード自 ...
- [BZOJ4444][SCOI2015]国旗计划-[ST表]
Description 传送门 Solution 说真的这道题在场上没做出来的我必定是脑子有洞.. 我们用st表记录以某个位置开始,派了1<<j个战士能到达的最远位置. 由于边境线是一圈, ...
- 【转载】OLE控件在Direct3D中的渲染方法
原文:OLE控件在Direct3D中的渲染方法 Windows上的图形绘制是基于GDI的, 而Direct3D并不是, 所以, 要在3D窗口中显示一些Windows中的控件会有很多问题 那么, 有什么 ...
- windows下安装,配置redis以及可视化客户端redisClient的安装及基本使用
一. Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases. Redis 支持 32 位和 64 位.这个需要根据你系统平台的实际情 ...
- 一个奇怪的JS函数
今天在分析一个jQuery插件源码的时候,发现了一个奇怪的函数. 这个函数的目的是为数字补零,如传入7,输出07,传入12输出12.由于是对时间补零,只截取后两位. // add leading ze ...
- 欢迎使用 Flask¶
欢迎使用 Flask¶ 欢迎阅读 Flask 文档. 本文档分为几个部分.我推荐您先从 安装 开始,之后再浏览 快速入门 章节. 教程 比快速入门更详细地介绍了如何用 Flask 创建一个完整的 应用 ...
- java模拟http请求
java模拟http发送请求,第一种是HttpURLConnection发送post请求,第二种是使用httpclient模拟post请求, 方法一: package main.utils; impo ...
- Chrome 字体模糊解决
新的电脑装了Chorm后发现字体很模糊,看起来比较累效果是这样的: 大多数都是说使用chrome://flags/中的DirectWrite开关来使其正常显示,我打开chrome://flags/没找 ...