首页 文章资讯内容详情

使用 C++ 中的给定操作将数组缩减为单个元素

2026-06-02 1 花语

给定一个整数变量Number作为输入。让我们考虑一个按排序顺序包含1到Number范围内的元素的数组。如果我们对一个数组执行一个操作,使得在每一步都删除奇数位置的元素。然后目标是执行此操作N次,直到只剩下一个元素。最后打印该元素。

注意-:元素的定位使得索引0处的数组位于第一个位置,依此类推。

数组中元素数的测试用例

输入数=1,输出=1

输入数=2,输出=2

输入数=3,输出=2

输入数=4,输出=4

输入数=5,输出=4

输入数=6,输出=4

输入数=7,输出=4

......

输入数=12,输出数=8

输入数=20,输出=16

根据上述观察,对于2i 到2i+1-1之间的数字范围,输出将为2i。

例子

输入 -Number=7

输出 -减少操作后的单个元素是:4

说明 -第一个元素位于位置1,依此类推。

该数组将是[1234567]

第一次操作后:[246]

第二次手术后:[4]

输入 -数字=18

输出 -减少操作后的单个元素是:4

说明-第一个元素位于位置1,依此类推。

该数组将是[123456789101112131415161718]

第一次操作后:[24681012141618]

第二次手术后:[281216]

第三次手术后:[816]

第四次手术后[16]

下面程序中使用的方法如下

在这种方法中,我们将使用while循环根据上述公式计算最终结果。取初始值为2并遍历直到2*result<=inputnumber并在每次迭代时将值加倍。

取输入变量Number

函数getsingleElement(longnum)获取输入数字并根据上述公式打印结果。

取一个可变的结果。

用2初始化结果。

使用while循环遍历直到result*2<=num。

双重结果里面会。

while循环一结束,我们就会得到想要的值。

返回结果。

在main中打印结果。

示例

#include<bits/stdc++.h> using namespace std; long getsingleElement(long num){ long result; result=2; while(result*2 <= num){ result=result*2; } return result; } int main(){ int Number = 20; cout<<"归约运算后的单个元素为: "<<getsingleElement(Number) ; return 0; }输出结果

如果我们运行上面的代码,它将生成以下输出

归约运算后的单个元素为: 16