给定一个整型变量 Number 作为输入。让我们考虑一个按排序顺序包含 1 到 Number 范围内的元素的数组。如果我们对数组执行操作,则每一步都会删除奇数位置的元素。那么目标就是执行这个操作N
直到只剩下一个元素为止的次数。在末尾打印该元素。
注意 -:元素的定位使得索引 0 处的数组位于第 1 个位置,依此类推。
元素数量的测试用例在数组中
输入数字=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,依此类推。
数组将为 [ 1 2 3 4 5 6 7 ]
第一次操作后:[ 2 4 6 ]
第二次操作后:[ 4 ]
输入 − 数字=18
输出− 归约运算后的单个元素为:4
解释 − 第一个元素位于位置 1 且
数组将是 [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ]
第一次操作后: [ 2 4 6 8 10 12 14 16 18]
第 2 次操作后:[ 2 8 12 16 ]
第 3 次操作后:[ 8 16 ]
第 4 次操作后 [ 16 ]
下面程序中使用的方法如下
在这种方法中,我们将使用 while 循环根据上面的公式计算最终结果。以初始值为2,遍历直到2*结果
-
取输入变量Number
-
函数 getsingleElement(long num) 获取输入数字并根据上述公式打印结果。
-
获取变量结果。
-
用2初始化结果。
-
使用while循环遍历,直到结果*2 li>
-
will 内的双倍结果。
-
一旦 while 循环结束,我们就会得到所需的值。
-
在main中打印结果。
返回结果。
示例
#include
using namespace std;
long getsingleElement(long num){
long result;
result=2;
while(result*2