C++ 程序以找到游戏开始前的最小和最大儿童数量

2023年 8月 27日 41.4k 0

C++ 程序以找到游戏开始前的最小和最大儿童数量

假设我们有一个包含 K 个元素的数组 A。考虑一下,在一场游戏中,有 N 个玩家,并且有一个游戏主持人。这个游戏有K轮。在第 i 轮游戏中,游戏主持人宣布将 A[i] 个孩子组成小组。然后剩下的孩子组成尽可能多的 A[i] 孩子组。一个孩子不能参加多个小组。没有组的人离开游戏。其他人进入下一轮。一轮可能没有玩家损失。最终,第K轮结束后,只剩下两个孩子,他们被宣布为获胜者。我们必须在开始之前找到游戏中可能存在的最小和最大的孩子数量,或者确定 N 不存在有效值。

因此,如果输入类似于 A = [3, 4 , 3, 2],那么输出将是 [6, 8],因为如果游戏以 6 个孩子开始,那么它会继续

  • 在第 1 轮中,其中6人组成两组,每组3人

  • 他们组成两组,分别有4个和2个孩子

  • 然后一组1 个孩子和 3 个孩子,1 个将离开游戏

  • 他们三个组成 1 和 2 的一组。1 个将离开。

最后 2 个孩子被宣布为获胜者。

步骤

为了解决这个问题,我们将遵循以下步骤 -

n := size of A
Define a large array a, l, r, a of size: 100010.
l := 2, r = 2
for initialize i := 1, when i = 1, update (decrease i by 1), do:
x := a[i], L := (l + x - 1)
if L > R, then:
return -1, 0
l := L, r = R + x - 1
return l, r

登录后复制

示例

让我们看看以下实现,以便更好地理解 -

#include
using namespace std;

void solve(vector A){
int n = A.size();
int l, r, a[100010];
l = 2, r = 2;
for (int i = 1; i = 1; i--){
int x = a[i], L = (l + x - 1) / x * x, R = r / x * x;
if (L > R){
cout

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论