입력으로 정수 변수 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