考研机试 糖果分享游戏

糖果分享游戏

一些学生围坐一圈,中间站着他们的老师,所有人都面向老师。
他们要玩一个有关糖果分享的游戏。每个学生最开始都有一定数量的糖果(保证一定是偶数)。
每轮游戏的进程为:

老师吹起哨声,所有学生同时拿出自己一半数量的糖果,递给右边相邻的同学。
传递完成后,所有拥有奇数数量糖果的同学都将再得到一颗糖果。

游戏将不断进行,直到所有学生拥有的糖果数量均相等为止。

现在,给定所有学生的初始糖果数量,请确定游戏进行的总轮次数以及游戏结束后每个学生的糖果数量。
输入格式

输入可能包含多组数据。
每组数据第一行包含整数 N,表示学生数量。
接下来 N行,以逆时针方向描述每个学生的初始糖果数量,每行包含一个整数。当输入一行 N=0时,表示输入结束。
输出格式

每组数据输出一个结果,占一行。

首先输出游戏总轮次,然后输出游戏结束后每个人的糖果数量。
游戏一定会在有限轮次内结束,原因如下:

设每轮游戏开始前,拥有最多糖果的人的糖果数量为 max,拥有最少糖果的人的糖果数量为 min,那么:

每轮过后,max的值都不会增加。每轮过后,min的值都不会减少。某轮开始前,拥有糖果数量大于 min的所有人在该轮结束后,拥有的糖果数量也一定大于该轮开始前的 min。某轮开始前,如果 min和 max 不相等,那么至少一个拥有 min个糖果的人在该轮结束后,拥有糖果数量会增加。

数据范围
1≤N≤100,每个学生的初始糖果数量不超过 100,且一定是偶数。
每个输入最多包含 100 组数据。

用vector进行记录每个小朋友的糖果数量
逆时针方向vector[0] vector[1] …vector[n-1]
每次游戏进行时 改变vector 变成自己的二分之一加左边的二分之一 再判断是否奇数 奇数再加一颗糖果
直到所有人拥有的糖果数量相同
i 右手边 是(i+1)%size
两个步骤 分享糖果 检查是否相等 写成两个函数

#include <iostream>
#include <vector>
using namespace std;
//
void game(vector<int> &vec){int size=vec.size();//分糖果的时候不能先分第一个再分第二个 是同时分vector<int> share(size);//保存再交换之前糖果数量的一半for(int i=0;i<size;++i){share[i]=vec[i]/2;}for(int i=0;i<size;++i){vec[i]-=share[i];vec[(i+1)%size]+=share[i];}for(int i=0;i<size;++i){if(vec[i]%2!=0){vec[i]+=1;}}
}
bool CheckCandy(vector<int> &vec1){//判断所有同学糖果数量是否相等int size=vec1.size();int first=vec1[0];for(int i=1;i<size;++i){if(first!=vec1[i]){return false;}}return true;
}
int main(){int n;while(scanf("%d",&n)!=EOF){if(n==0){break;}vector<int> vec1(n);//初始化vec1 总共n个小朋友for(int i=0;i<n;++i){scanf("%d",&vec1[i]);}//小朋友的糖果初始化好了//开始游戏 怎么判断游戏结束 计算游戏的次数int trun=0;while(CheckCandy(vec1)== false){game(vec1);++trun;}printf("%d %d\n",trun,vec1[0]);}}

要注意小朋友围成一圈怎么处理
按照逆时针编号方向增大 小朋友逆时针传递 编号大的接收编号小的传来的一半 对0进行特殊处理

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

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

相关文章

苹果Find My市场需求火爆,伦茨科技ST17H6x芯片助力客户量产

苹果发布AirTag发布以来&#xff0c;大家都更加注重物品的防丢&#xff0c;苹果的 Find My 就可以查找 iPhone、Mac、AirPods、Apple Watch&#xff0c;如今的Find My已经不单单可以查找苹果的设备&#xff0c;随着第三方设备的加入&#xff0c;将丰富Find My Network的版图。产…

2024年华为OD机试真题-寻找最富裕的小家庭-Java-OD统一考试(C卷)

题目描述: 在一棵树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为一个小家庭。 现给你一棵树,请计算出最富裕的小家庭的财富和。 输入描述:第一行为一个数N,表示成员总数,成员编号1-N,1<=N<=1000 第二行为N个…

Unity 中的接口和继承

在Unity的游戏开发中&#xff0c;理解面向对象编程的概念&#xff0c;如类、接口、继承和多态性&#xff0c;是非常重要的。本文旨在帮助理解和掌握Unity中接口和继承的概念&#xff0c;以及如何在实际项目中应用这些知识。 类和继承 在C#和Unity中&#xff0c;类是构建应用程序…

WSL中遇到CondaHTTPError: HTTP 000 CONNECTION FAILED for url解决方法

文章目录 遇到问题解决方法参考 遇到问题 之前用WSL使用conda都是正常的&#xff0c;今天用的时候遇到CondaSSLError: Encountered an SSL error. Most likely a certificate verification issue. (base) lishizhengDESKTOP-8SJ6087:~$ conda update -n base -c defaults con…

Google Chrome RCE漏洞 CVE-2020-6507 和 CVE-2024-0517 流程分析

本文深入研究了两个在 Google Chrome 的 V8 JavaScript 引擎中发现的漏洞&#xff0c;分别是 CVE-2020-6507 和 CVE-2024-0517。这两个漏洞都涉及 V8 引擎的堆损坏问题&#xff0c;允许远程代码执行。通过EXP HTML部分的内存操作、垃圾回收等流程方式实施利用攻击。 CVE-2020-…

操作符详解(上)

目录 操作符的分类 二进制和进制转换 2进制转10进制 10进制转2进制数字 2进制转8进制 2进制转16进制 原码、反码、补码 移位操作符 左移操作符 右移操作符 位操作符&#xff1a;&、|、^、~ 单目操作符 逗号表达式 操作符的分类 • 算术操作符&#xff1a; …

【C++干货铺】 RAII实现智能指针

个人主页点击直达&#xff1a;小白不是程序媛 C系列专栏&#xff1a;C干货铺 代码仓库&#xff1a;Gitee 目录 为什么需要智能指针&#xff1f; 内存泄漏 什么是内存泄漏&#xff0c;内存泄露的危害 内存泄漏的分类 堆内存泄漏&#xff08;Heap leak&#xff09; 系统资…

CMG GPP 0.05°全球区域2000~2019年月数据分享

各位同学们好&#xff0c;今天分享的是CMG GPP 0.05全球区域2000~2019年月数据。您可以私信或评论。 一、数据简介 准确估算陆地植被的初级生产总值&#xff08;GPP&#xff09;对于了解全球碳循环和预测未来气候变化至关重要。目前有多种基于不同方法的 GPP 产品&#xff0c…

ORM-08-EclipseLink 入门介绍

拓展阅读 The jdbc pool for java.(java 手写 jdbc 数据库连接池实现) The simple mybatis.&#xff08;手写简易版 mybatis&#xff09; 1. EclipseLink概述 本章介绍了EclipseLink及其关键特性&#xff1a;包括在EclipseLink中的组件、元数据、应用程序架构、映射和API。 本…

Leetcode—29. 两数相除【中等】

2023每日刷题&#xff08;九十四&#xff09; Leetcode—29. 两数相除 叛逆期实现代码 class Solution { public:int divide(int dividend, int divisor) {if(dividend INT_MIN && divisor -1) {return INT_MAX;} return dividend / divisor;} };运行结果 倍增算法…

java多线程测试websocket demo(使用文件流)

这个demo主要是利用Java多线程来测试WebSocket通信。首先&#xff0c;创建一个WebSocket服务器和客户端&#xff0c;然后使用多线程来模拟多个客户端同时连接服务器进行通信。通过多线程测试&#xff0c;可以验证WebSocket通信的并发性能和稳定性。同时&#xff0c;可以通过多线…

第14章_数据结构与集合源码(一维数组,链表,栈,队列,树与二叉树,List接口分析,Map接口分析,Set接口分析,HashMap的相关问题)

文章目录 第14章_数据结构与集合源码本章专题与脉络1. 数据结构剖析1.1 研究对象一&#xff1a;数据间逻辑关系1.2 研究对象二&#xff1a;数据的存储结构&#xff08;或物理结构&#xff09;1.3 研究对象三&#xff1a;运算结构1.4 小结 2. 一维数组2.1 数组的特点2.2 自定义数…

内存屏障,写屏障和读屏障

目录 jmm&#xff1a; 写屏障和读屏障 jmm&#xff1a; Java 内存模型&#xff08;Java Memory Model&#xff0c;简称 JMM&#xff09;是一种规定了多线程环境中共享变量的访问规则的模型。它确保了在不同线程之间的可见性、有序性和原子性。以下是关于 Java 内存模型的一些…

HTTP简单的接收和发送

注释 简单的http通讯信息&#xff0c;可以适应简单的场景 void Start(){StartCoroutine(GetRequest("https://jsonplaceholder.typicode.com/posts/1"));StartCoroutine(PostRequest("https://jsonplaceholder.typicode.com","hahah"));}/// &…

【基础算法练习】前缀和与差分模板

文章目录 前缀和算法思想差分算法思想C 版本的前缀和模板一维前缀和二维前缀和 C 版本的差分模板一维差分二维差分 前缀和算法思想 用 O(N) 的复杂度构建前缀和数组&#xff0c;通过这种方式达成 O(1) 的时间来得到区间和&#xff0c;说是一种算法&#xff0c;其实可以说是一种…

何恺明 ResNet 引用量正式破20万!!!

注: 本文转自微信公众号 BravoAI (专注AI资讯和技术分享), 原文网址: 何恺明 ResNet 引用量正式破20万!!!, 扫码关注公众号 谷歌学术显示, 截止到 2024年1月26日, 何凯明 ResNet 一文引用量正式突破 20W!!! 更为惊人的是, 从论文发表到今天, 不过7年!!!‍‍‍‍‍‍‍‍‍‍‍‍…

springboot347基于web的铁路订票管理系统

获取源码——》公主号&#xff1a;计算机专业毕设大全

经典框架解读 | 论文+代码 | 3D Detection | OpenPCDet | PointRCNN

论文标题:PointRCNN: 3D Object Proposal Generation and Detection from Point Cloud 作者单位:The Chinese University of Hong Kong 代码:open-mmlab/OpenPCDet 论文:https://arxiv.org/pdf/1812.0424 第一次使用点云数据处理3D目标检测问题。 作者的观点: 1. 以前的…

预处理详解1❤

一&#xff1a;预定义符号 C语言中设置了一些预定义符号&#xff0c;它们可以直接使用&#xff0c;同时预定义符号是在预处理期间处理的。 以下就是相关的预处理符号的作用。 二&#xff1a;#define定义常量 首先基本的语法是 #define name stuff 相对比较简单&#xff…

Ultraleap 3Di配置以及在 Unity 中使用 Ultraleap 3Di手部跟踪

0 开发需求 1、硬件&#xff1a;Ultraleap 手部追踪相机&#xff08;Ultraleap 3Di&#xff09; 2、软件&#xff1a;在计算机上安装Ultraleap Gemini (V5.2) 手部跟踪软件。 3、版本&#xff1a;Unity 2021 LTS 或更高版本 4、Unity XR插件管理&#xff1a;可从软件包管理器窗…