Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 주어진 연산을 사용하여 배열을 단일 요소로 줄입니다.

<시간/>

입력으로 정수 변수 Number가 제공됩니다. 정렬된 순서로 1에서 숫자 범위의 요소를 포함하는 배열을 생각해 보겠습니다. 각 단계에서 홀수 위치에 있는 요소가 제거되도록 배열에 대한 작업을 수행하는 경우. 그런 다음 목표는 단일 요소만 남을 때까지 이 작업을 N번 수행하는 것입니다. 마지막에 해당 요소를 인쇄하십시오.

참고-:요소의 위치는 인덱스 0의 배열이 1번째 위치에 있도록 하는 식입니다.

배열의 요소 수에 대한 테스트 사례

입력 번호=1, 출력 =1

입력번호=2, 출력=2

입력 번호=3, 출력 =2

입력 번호=4, 출력 =4

입력 번호=5, 출력 =4

입력 번호=6, 출력 =4

입력 번호=7, 출력 =4

......

입력 번호=12, 출력 =8

입력 번호=20, 출력 =16

위의 관찰에 기초하여 2 i 사이의 숫자 범위에 대해 2 i+1 까지 -1 출력은 2 i 가 됩니다. .

예시

입력 −숫자=7

출력 − 축소 연산 후 단일 요소:4

설명 − 첫 번째 요소는 위치 1에 있습니다.

배열은 [ 1 2 3 4 5 6 7 ]

입니다.

1차 작전 후:[ 2 4 6 ]

2차 작전 이후:[ 4 ]

입력 − 숫자=18

출력 − 축소 연산 후 단일 요소:4

설명 − 첫 번째 요소는 위치 1에 있습니다.

배열은 [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ]

입니다.

1차 수술 후:[ 2 4 6 8 10 12 14 16 18]

2차 작전 후:[ 2 8 12 16 ]

3차 작전 이후:[ 8 16 ]

4차 작업 후 [ 16 ]

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

이 접근 방식에서는 while 루프를 사용하여 위의 공식을 기반으로 최종 결과를 계산합니다. 초기값을 2로 하여 2*result <=입력 숫자가 될 때까지 순회하고 각 반복에서 값을 두 배로 늘립니다.

  • 입력 변수 Number 사용

  • getsingleElement(long num) 함수는 입력된 숫자를 받아 위의 공식에 따라 결과를 출력합니다.

  • 다양한 결과를 가져오세요.

  • 2로 결과를 초기화합니다.

  • 결과*2<=num.

    까지 while 루프를 사용하여 순회
  • 이중 결과는 의지입니다.

  • while 루프가 끝나자 마자 원하는 값을 얻게 됩니다.

  • 결과를 반환합니다.

  • 메인 안에 결과를 출력하세요.

예시

#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