给定一个整型变量 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<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<<"The single element after reduction operation is : "<<getsingleElement(Number) ; return 0; }
如果我们运行上面的代码,它将生成以下输出
The single element after reduction operation is : 16
以上是使用给定的操作将数组缩减为一个元素的详细内容。更多信息请关注PHP中文网其他相关文章!