取石子游戏——算法与编程

news2024/11/17 9:47:24

取石子游戏 目录

  • 问题描述
    • 输入输出格式
      • 输入格式:
      • 输出格式:
    • 输入输出样例
    • 输入样例#1:
    • 输出样例#1:
    • 提示信息
  • 算法
    • 尼姆博奕
  • 代码

在这里插入图片描述

问题描述

A l i c e Alice Alice B o b Bob Bob在玩取石子游戏,摆在他们面前的有 n n n堆石子,第 i i i堆石子有 a i a_i ai个,两人轮流取石子,每次只能从一堆中取,而且每堆石子都有各自的限制,就是第i堆石子每次只能取 1 − k i 1-k_i 1ki个。
如果 A l i c e Alice Alice先手,他会赢吗?

输入输出格式

输入格式:

  • 第一行一个数 n n n
  • 第二行 n n n个数,分别是每堆石子的个数,
  • 第三行 n n n个数,分别是每堆石子限制取的个数。

输出格式:

  • 如果 A l i c e Alice Alice获胜输出 A l i c e Alice Alice,否则输出 B o b Bob Bob

输入输出样例

输入样例#1:

5
3 7 5 19 16
3 4 10 7 5

输出样例#1:

Alice

提示信息

1 ≤ n ≤ 1000 ; 1 ≤ a i , k i ≤ 100000 1≤n≤1000;1≤a_i,k_i≤100000 1n10001aiki100000

算法

尼姆博奕

N N N堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。这种情况最有意思,它与二进制有密切关系,我们用 ( a , b , c ) (a,b,c) (a,b,c) 表示某种局势,首先 ( 0 , 0 , 0 ) (0,0,0) (0,0,0) 显然是奇异局势,无论谁面对奇异局势,都必然失败。第二种奇异局势是 ( 0 , n , n ) (0,n,n) (0,n,n),只要与对手拿走一样多的物品,最后都将导致 ( 0 , 0 , 0 ) (0,0,0) (0,0,0)。仔细分析一下, ( 1 , 2 , 3 ) (1,2,3) (1,2,3) 也是奇异局势,(我先拿之后,)无论对手如何拿,接下来都可以变为 ( 0 , n , n ) (0,n,n) (0,n,n) 的情形。

计算机算法里面有一种叫做按位模 2 加,也叫做异或的运算,我们用符号 ( + ) (+) (+) 表示这种运算。这种运算和一般加法不同的一点是 1 + 1 = 0 1+1=0 1+1=0。先看 ( 1 , 2 , 3 ) (1,2,3) (1,2,3) 的按位模 2 加的结果:

1 = 二进制  01 2 = 二进制  10 3 = 二进制  11 1  (+)  2  (+)  3 = 0  (注意不进位) 1 = \text{二进制 } 01 \\ 2 = \text{二进制 } 10 \\ 3 = \text{二进制 } 11 \\ 1 \text{ (+) } 2 \text{ (+) } 3 = 0 \text{ (注意不进位)} 1=二进制 012=二进制 103=二进制 111 (+) 2 (+) 3=0 (注意不进位)

对于奇异局势 ( 0 , n , n ) (0,n,n) (0,n,n) 也一样,结果也是 0 0 0。任何奇异局势 ( a , b , c ) (a,b,c) (a,b,c) 都有 a  (+)  b  (+)  c = 0 a \text{ (+) } b \text{ (+) } c = 0 a (+) b (+) c=0

如果我们面对的是一个非奇异局势 ( a , b , c ) (a,b,c) (a,b,c),要如何变为奇异局势呢?假设 a < b < c a < b < c a<b<c,我们只要将 c c c 变为 a  (+)  b a \text{ (+) } b a (+) b 即可,因为有如下的运算结果:

a  (+)  b  (+)  ( a  (+)  b ) = ( a  (+)  a )  (+)  ( b  (+)  b ) = 0  (+)  0 = 0 a \text{ (+) } b \text{ (+) } (a \text{ (+) } b) = (a \text{ (+) } a) \text{ (+) } (b \text{ (+) } b) = 0 \text{ (+) } 0 = 0 a (+) b (+) (a (+) b)=(a (+) a) (+) (b (+) b)=0 (+) 0=0

要将 c c c 变为 a  (+)  b a \text{ (+) } b a (+) b,只要从 c c c 中减去 c − ( a  (+)  b ) c-(a \text{ (+) } b) c(a (+) b) 即可。

代码

#include <iostream>
using namespace std;
int n,a[2000],b[2000],ans;
int main() {
	cin >>n;
	for (int i=1; i<=n; i++) {
		cin >>a[i];
	}
	for (int i=1; i<=n; i++) {
		cin >>b[i];
	}
	for (int i=1; i<=n; i++) {
		ans^=a[i]%(b[i]+1);
	}
	if (ans)
		cout <<"Alice";
	else
		cout <<"Bob";
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/634481.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GIS入门进阶之012

一、引言 空间数据可视化是有效传输与表达地理信息&#xff0c;挖掘空间数据之间的内在联系&#xff0c;揭示地理现象内在规律的重要手段。它通过运用地图学、计算机图形学和图像处理技术&#xff0c;将地学信息的输入、处理、查询、分析与预测的结果采用符号、图形、图像并结合…

OpenGL 材质实现

1.简介 在现实世界里&#xff0c;每个物体会对光产生不同的反应。比如&#xff0c;钢制物体看起来通常会比陶土花瓶更闪闪发光&#xff0c;一个木头箱子也不会与一个钢制箱子反射同样程度的光。有些物体反射光的时候不会有太多的散射&#xff0c;因而产生较小的高光点&#xf…

35岁被淘汰?软件测试工程师职业生涯规划,从技术到管理...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 入门阶段&#xf…

Parallel Desktop中按照的centos在切换root用户时,密码正确,但一直切换不成功,显示su: Authentication failure

目录 一、出现问题二、分析问题三、解决问题四、参考资料 一、出现问题 我的密码明明是输入正确的&#xff0c;但又一直给我报下面的错误 二、分析问题 我怀疑是我密码记错了&#xff0c;所以我点击Log Out&#xff0c;重新去输入了一下密码&#xff0c;发现是正确的我确认…

[学习笔记] [机器学习] 9. 朴素贝叶斯(概率基础、联合概率、条件概率、贝叶斯公式、情感分析)

视频链接数据集下载地址&#xff1a;无需下载 学习目标&#xff1a; 4. 说明条件概率与联合概率 5. 说明贝叶斯公式、以及特征独立的关系 6. 记忆贝叶斯公式 7. 知道拉普拉斯平滑系数 8. 应用贝叶斯公式实现概率的计算 9. 会使用朴素贝叶斯对商品评论进行情感分析 1. 朴素贝叶…

对象进阶-继承、原型-原型链

工厂方法创建对象 我们之前已经学习了如何创建一个对象&#xff0c;那我们要是想要创建多个对象又该怎么办&#xff1f;聪明的同学可能会说&#xff0c;直接在写几个对象不就好了吗&#xff1f;比如下边的代码&#xff1a; var person1 {name: "孙悟空",age: 18,s…

APP自动化测试,Appium+PO模式+Pytest框架实战—项目案例

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 PO模式&#xff1…

如何解决GEE导出影像的Nodata值在ArcGIS中无法正常显示?

目录 01 ArcGIS对于GEE掩膜影像的Nodata值的说明 02 处理方法 2.1 方法1-GEE修改掩膜值 Arguments: Returns: Image 2.2 方法2-ArcGIS重新赋值Nodata&#xff08;推荐&#xff09; 01 ArcGIS对于GEE掩膜影像的Nodata值的说明 当在GEE中进行掩膜后&#xff0c;将影像在Ar…

打造极简风格动效 —— 5 分钟轻松实现惊艳、震撼人心的视觉效果

前期回顾 是不是在为 API 烦恼 &#xff1f;好用免费的api接口大全呼之欲出_免流接口api_彩色之外的博客-CSDN博客APi、常用框架、UI、文档—— 整理合并https://blog.csdn.net/m0_57904695/article/details/130459417?spm1001.2014.3001.5501 &#x1f44d; 本文专栏&…

20道嵌入式经典面试题(附答案)

1.嵌入式系统中经常要用到无限循环&#xff0c;如何用C编写死循环 答&#xff1a;while(1){} 或者 for(;;) 2.程序的局部变量存在于哪里&#xff0c;全局变量存在于哪里&#xff0c;动态申请数据存在于哪里。 答&#xff1a;程序的局部变量存在于栈区&#xff1b;全局变量存在…

【Linux】浅谈文件原理与操作

目录 问题引入 浅谈文件原理 文件操作 文件的打开与关闭 open close write与read 再谈C库文件操作 问题引入 &#x1f338;以前我们学过C语言的文件操作&#xff0c;而不同语言的文件操作都是不一样的&#xff0c;我们该如何理解这一现象&#xff0c;能不能用一种统一…

有关 string 类的练习(下)

目录 一、反转字符串 II 二、反转字符串中的单词 III 三、找出字符串中第一个只出现一次的字符 四、字符串相乘 五、把字符串转换成整数 一、反转字符串 II 给定一个字符串 s 和一个整数 k&#xff0c;从字符串开头算起&#xff0c;每计数至 2k 个字符&#xff0c;就反转…

Spring,注解开发

Spring是一个轻量级的控制反转&#xff08;IOC&#xff09;和面向切面编程&#xff08;AOP&#xff09;的框架 1、组成 spring七大模块详解 2、IOC理论推导 传统的开发 (pojo层、DAO层和业务层&#xff09; &#xff08;1&#xff09;UserDao &#xff08;2) UserDaoImpl (3)…

天狼星-大熊座 Ursa Major SIRIUS

大熊座 Ursa Major SIRIUS 键盘说明 客制化键盘&#xff1a; 大熊座 Ursa Major SIRIUS 配列&#xff1a; 75 键帽&#xff1a;KCA-HelloWorld-Black 双模&#xff1a; 蓝牙-分裂方案 驱动配置&#xff1a;Link Lab 驱动设置软件 键盘操作 键盘说明参考&#xff1a;键位配…

利用WinDbg查看堆栈中方法入参的值4(C#)

由于作者水平有限&#xff0c;如有写得不对的地方&#xff0c;请指正。 使用WinDbg的过程中&#xff0c;坑特别的多&#xff0c;对版本要求比较严格&#xff0c;如&#xff1a; 1 32位应用程序导出的Dump文件要用32位的WinDbg打开&#xff0c;想要没有那么多的问题&#xf…

海底光缆位置探测技术的应用概述

1. 概述 海底光缆运行在地质环境复杂的海洋环境中&#xff0c;地震、海床塌陷、滑坡、洋流变化、海洋生物及船只抛锚都有可能造成光缆断裂、破损&#xff0c;影响光缆的安全运行。海底光缆一旦遭受损坏&#xff0c;其造成的经济损失无法估量。因此在海洋开发工程实施前&#xf…

Web转化为APP——YonBIP(APICloud迁移版)

目录 平台注册 平台使用 设计封面&#xff08;端设置&#xff09; APP证书 代码上传 移动打包 运营管理和移动插件 众所周知&#xff0c;APP开发是一件非常麻烦的事&#xff0c;很多擅长Web开发的人未必擅长APP开发。那么作为一个Web开发者&#xff0c;可不可以有很方便…

基于prefix tuning + Bert的标题党分类器

文章目录 背景一、Prefix-Tuning介绍二、分类三、效果四、参阅 背景 近期, CSDN博客推荐流的标题党博客又多了起来, 先前的基于TextCNN版本的分类模型在语义理解上能力有限, 于是, 便使用的更大的模型来优化, 最终准确率达到了93.7%, 还不错吧. 一、Prefix-Tuning介绍 传统的…

Redis之Redisson原理详解

文章目录 1 Redisson1.1 简介1.2 与其他客户端比较1.3 操作使用1.3.1 pom.xml1.3.2 配置1.3.3 启用分布式锁 1.4 大致操作原理1.5 RLock1.5.1 RLock如何加锁1.5.2 解锁消息1.5.3 锁续约1.5.4 流程概括 1.6 公平锁1.6.1 java中公平锁1.6.2 RedissonFairLock1.6.3 公平锁加锁步骤…

50 Projects 50 Days - Form Input Wave 学习记录

项目地址 Form Input Wave 展示效果 Form Input Wave 实现思路 简单的登陆界面结构&#xff0c;只是在输入框聚焦时标题提示文字会有一个字母逐渐向上跳动的动画效果&#xff0c;这需要针对每个字符单独设置变换的延时&#xff0c;可以考虑在JavaScript中处理这部分逻辑&am…