#博弈论#HDU 2516 取石子游戏
题目
\(n\)个石子,两人轮流取.先取者第1次可以取任意多个,
但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。
取完者胜.先取者负输出"Second win".先取者胜输出"First win".
分析
\(n\)为斐波那契数先手必败,否则先手必胜
dalao的证明
代码
#include <cstdio>
#include <cctype>
#include <algorithm>
#define rr register
using namespace std;
typedef unsigned uit; uit fib[51],n;
inline uit iut(){
rr uit ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
signed main(){
fib[1]=1,fib[2]=2;
for (rr uit i=3;i<48;++i) fib[i]=fib[i-1]+fib[i-2];
while (n=iut()){
rr uit t=lower_bound(fib+1,fib+48,n)-fib;
puts(fib[t]==n?"Second win":"First win");
}
return 0;
}
#博弈论#HDU 2516 取石子游戏的更多相关文章
- HDU.2516 取石子游戏 (博弈论 斐波那契博弈)
HDU.2516 取石子游戏 (博弈论 斐波那契博弈) 题意分析 简单的斐波那契博弈 博弈论快速入门 代码总览 #include <bits/stdc++.h> #define nmax ...
- HDU 2516 取石子游戏 (博弈论)
取石子游戏 Problem Description 1堆石子有n个,两人轮流取.先取者第1次能够取随意多个,但不能所有取完.以后每次取的石子数不能超过上次取子数的2倍.取完者胜.先取者负输出" ...
- HDU 2516 取石子游戏(斐波那契博弈)
取石子游戏 Time Limit: 2000/1000 MS(Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- HDU 2516 取石子游戏(FIB博弈)
取石子游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- HDU 2516 取石子游戏(斐波那契)
取石子游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- hdu 2516 取石子游戏 (博弈)
取石子游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- hdu 2516 取石子游戏 (Fibonacci博弈)
取石子游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- {HDU}{2516}{取石子游戏}{斐波那契博弈}
题意:给定一堆石子,每个人最多取前一个人取石子数的2被,最少取一个,最后取石子的为赢家,求赢家. 思路:斐波那契博弈,这个题的证明过程太精彩了! 一个重要的定理:任何正整数都可以表示为若干个不连续的斐 ...
- HDU 2516 取石子游戏 斐波纳契博弈
斐波纳契博弈: 有一堆个数为n的石子,游戏双方轮流取石子,满足: 1)先手不能在第一次把所有的石子取完: 2)之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍) ...
- HDU 2516 取石子游戏 (找规律)
题目链接 Problem Description 1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍.取完者胜.先取者负输出" ...
随机推荐
- FFmpeg开发笔记(十一):ffmpeg在移植到海思HI35xx平台之将ffmpeg库引入到sample的demo中
前言 上一篇交叉编译了ffmpeg的海思版本,使用交叉编译的qt的ffmpeg播放器在海思上播放,本片是将ffmpeg的环境添加进海思的sample环境中. 在海思sample中引入ffmpe ...
- context讲解
context包 context包介绍 在go语言中,每个独立调用一般都会被单独的协程处理.但在处理一个请求时,往往可能需要在多个协程之间进行信息传递,甚至包括一层层地递进顺序传递,而且这种信息往 ...
- 【Azure 应用服务】收集App Service 关于Availability Zone, Health check 以及 Traffic Manager的文档,并了解高可用(HA)和灾备(DR)
问题描述 收集App Service 关于Availability Zone, Health check 以及 Traffic Manager的文档,并了解高可用(HA)和灾备(DR)的具体办法 问题 ...
- 【Azure 应用服务】Azure Function在执行Function的时候,如果失败了,是否可以重试呢?
问题描述 Azure Function在执行Function的时候,如果失败了,是否可以重试呢? 问题解答 Function app默认是不开启重试的,但是可以修改 host.json 文件来定义重试 ...
- 方便快速的看到C/C++代码汇编 objdump 英特尔语法
目录 概述 Objdump 所有参数 其他的 概述 因为奇怪的考试要求,最近经常有奇怪的问题,例如为什么(++a)+(++a)=14 发现反编译出汇编之后,就能解释很多奇怪的问题 Objdump 一次 ...
- 别再低效筛选数据了!试试pandas query函数
数据过滤在数据分析过程中具有极其重要的地位,因为在真实世界的数据集中,往往存在重复.缺失或异常的数据.pandas提供的数据过滤功能可以帮助我们轻松地识别和处理这些问题数据,从而确保数据的质量和准确性 ...
- 并发编程 --- CAS原子操作
介绍 CAS(Compare And Swap) 是一种无锁算法的实现手段,中文名称为比较并交换.它由 CPU 的原子指令实现,可以在多线程环境下实现无锁的数据结构. 原理 CAS 的原理是:它会先比 ...
- c语言中float和double类型的区别
1.变量bai类型不同 float属于单du精度zhi型浮点数据. double属于双精度型浮点数据. 2.指数范围不同 float的指数范围为-127~128. double而double的指数范围 ...
- vue入门教程之-插槽
vue入门教程之-插槽 欢迎关注博主公众号「java大师」, 专注于分享Java领域干货文章, 关注回复「资源」, 免费领取全网最热的Java架构师学习PDF, 转载请注明出处 https://www ...
- DWR之入门实例(一)
DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给 ...