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

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

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

数组中元素数的测试用例

输入数=1,输出=1

输入数=2,输出=2

输入数=3,输出=2

输入数=4,输出=4

输入数=5,输出=4

输入数=6,输出=4

输入数=7,输出=4

......

输入数=12,输出数=8

输入数=20,输出=16

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

例子

输入 -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 8 12 16 ]

第三次手术后:[ 8 16 ]

第四次手术后 [ 16 ]

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

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

  • 取输入变量 Number

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

  • 取一个可变的结果。

  • 用 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

以上是 使用 C++ 中的给定操作将数组缩减为单个元素 的全部内容, 来源链接: utcz.com/z/317234.html

回到顶部