题目描述

N个石子,A和B轮流取,A先。每个人每次最少取一个,最多不超过上一个人的个数的2倍。
取到最后一个石子的人胜出,如果A要有必胜策略,第一次他至少要取多少个。

输入

第一行给出数字N,N<=10^15.第二行N个数字

输出

如题

样例输入

4

样例输出

1
根据齐肯多夫定理,任何一个正整数都能由若干个不连续的斐波那契数表示。
那么这个博弈就可以分成若干个斐波那契博弈(斐波那契博弈详见博弈论讲解)。
A只要第一次取走n被表示的最小斐波那契数,那么B就变成了先手、A变成了后手。
这时B无法取到下一个最小的斐波那契数(因为表示这个数的斐波那契数不连续且后手不能取超过先手的二倍)。
所以对于剩下的每个斐波那契数都是B先取且最后一个一定被A取到。

#include<set>
#include<map>
#include<queue>
#include<cmath>
#include<stack>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
ll f[100];
int cnt;
ll n;
int main()
{scanf("%lld",&n);f[1]=1;f[0]=1;cnt=2;while(1){f[cnt]=f[cnt-1]+f[cnt-2];if(f[cnt]>=n){break;}cnt++;}for(int i=cnt;i>=1;i--){if(n==f[i]){printf("%lld",n);return 0;}if(n>f[i]){n-=f[i];}}
}

转载于:https://www.cnblogs.com/Khada-Jhin/p/9620164.html

BZOJ2275[Coci2010]HRPA——斐波那契博弈相关推荐

  1. HDU 2516 取石子游戏 斐波纳契博弈

    斐波纳契博弈: 有一堆个数为n的石子,游戏双方轮流取石子,满足: 1)先手不能在第一次把所有的石子取完: 2)之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍) ...

  2. 2019ICPC(徐州) - Who is better?(中国剩余定理+斐波那契博弈)

    题目链接:点击查看 题目大意:给定k组a和b表示同余式,分别代表n%a=b,求出n后,代表有n个敌人,有两个人我们称为A和B,从A开始杀敌,第一次A可以杀至少一个敌人,至多n-1个敌人,接下来B与A轮 ...

  3. 吴昊品游戏核心算法(新年特别篇)——另类取石子游戏(斐波那契博弈)

    吴昊继续,我再也不想搬一堆石头放在这里了,取而代之的是<编程之美>中的关于游戏章节的一个插图,这本书中也有对<取石子游戏>的较为完备的讨论. 这次的游戏是神马? 1堆石子有n个 ...

  4. 博弈论基础知识: 巴什博奕+斐波那契博弈+威佐夫博奕+尼姆博弈(及Staircase)

    博弈论基础知识: 巴什博奕+斐波那契博弈+威佐夫博奕+尼姆博弈(及Staircase) 转载自: http://tieba.baidu.com/p/1474319443 http://blog.sin ...

  5. 博弈论(巴什博奕,威佐夫博弈,尼姆博弈,斐波那契博弈)

    一.  巴什博奕(Bash Game): A和B一块报数,每人每次报最少1个,最多报4个,看谁先报到30.这应该是最古老的关于巴什博奕的游戏了吧. 其实如果知道原理,这游戏一点运气成分都没有,只和先手 ...

  6. 四种基础博弈 巴什博奕+威佐夫博奕+斐波那契博弈+K倍博弈

    博弈论(Game Theory) 博弈论是指研究多个个体或团队之间在特定条件制约下的对局中利用相关方的策略,而实施对应策略的学科.有时也称为对策论,或者赛局理论,是研究具有斗争或竞争性质现象的理论和方 ...

  7. 博弈论-斐波那契博弈

    1.斐波那契博弈是另种类型的博弈,这种博弈要求的条件是(1):博弈者还是两个人,n个物品(2)先手在第一次不能取完所有的物品,但是至少取走一个物品.(3)以后的每一个回合,每次取走的物品至多是上一个人 ...

  8. 数学基础(四)博弈论(巴什博弈~威佐夫博弈(黄金分割率)~尼姆博奕~斐波那契博弈~SG函数模板)

    一.巴什博弈 1.问题模型 只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个,最后取光者得胜. 2.解决思路: 当n=m+1时,由于一次最多只能取m个,所以无论先取者拿走多 ...

  9. 巴什博奕,威佐夫博奕,尼姆博奕,斐波那契博弈模板

    1.巴什博奕 只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜. 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够 ...

最新文章

  1. CF558E A Simple Task 线段树
  2. 苹果树的故事(转发的)
  3. 目前MPLS有哪些备份方案?
  4. sqlservcer行列互转
  5. matlab话pca的双标图biplot,r – 用ggplot2绘制pca biplot
  6. 编译编译时,用不到的库,一定不要链接
  7. lede 内核 单 编_openwrt详细设置教程,lede固件设置中文
  8. delphi 获取硬盘序列号、cpu号、bios号、网卡号
  9. mysql批量生成随机姓名、手机号等数据
  10. 今日更新京东皮卡丘1.7修复链接和预约抢购下单商品,手机端茅台抢购软同步上架(可配备群控使用)
  11. python什么为假_Python返回真假值(True or False)小技巧
  12. 鸿蒙系统王维,以少总多,意余于象——王维《终南山》赏析
  13. windows windows计划任务访问网络存储NAS的问题
  14. 百面机器学习03-经典算法
  15. Android 双卡双待识别
  16. 《第六堂棒球课》:MLB棒球创造营·棒球名人堂
  17. Windows版本,OS内核版本,Windows SDK之间的关系(附 :Windows纯净系统下载以及更新)
  18. 一文告诉你游戏服务器的架构到底是什么样,各服务器的职责是什么
  19. springboot2.0 的ssl证书配置
  20. TTL与CMOS使用区别

热门文章

  1. 解决Apache CXF 不支持传递java.sql.Timestamp和java.util.HashMap类型问题
  2. poj 1679 次小生成树
  3. python测试脚本 进制转换_使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)...
  4. 福建省2013高职单招计算机类试题,13年福建-高职单招-计算机类试题及答案.doc
  5. access update语句执行_MySQL 中 update 修改数据与原数据相同会再次执行吗?
  6. ubuntu 禁用透明大页_Linux关于透明大页的使用与禁用介绍
  7. python wait_window_pywinauto客户端自动化---窗口等待方法
  8. java三角形创建子类_如何创建子类,以便参数属于Java中的子类类型
  9. 删除mysql表_Mysql 删除数据表的三种方式详解
  10. 随笔:送给初次使用PCL库的小伙伴