Computer >> Máy Tính >  >> Lập trình >> C ++

Giảm mảng thành một phần tử duy nhất với hoạt động đã cho trong C ++

Cho một biến số nguyên làm đầu vào. Chúng ta hãy xem xét một mảng chứa các phần tử trong phạm vi từ 1 đến Số theo thứ tự được sắp xếp. Nếu chúng ta thực hiện một thao tác trên một mảng sao cho ở mỗi bước, các phần tử ở các vị trí lẻ sẽ bị loại bỏ. Sau đó, mục tiêu là thực hiện thao tác này Số lần cho đến khi chỉ còn lại một phần tử duy nhất. In phần tử đó ở cuối.

Lưu ý-:Vị trí của các phần tử sao cho mảng ở chỉ số 0 ở vị trí đầu tiên, v.v.

Các trường hợp kiểm tra cho số phần tử trong mảng

Số đầu vào =1, đầu ra =1

Số đầu vào =2, đầu ra =2

Số đầu vào =3, đầu ra =2

Số đầu vào =4, đầu ra =4

Số đầu vào =5, đầu ra =4

Số đầu vào =6, đầu ra =4

Số đầu vào =7, đầu ra =4

......

Số đầu vào =12, đầu ra =8

Số đầu vào =20, đầu ra =16

Dựa trên quan sát ở trên, cho phạm vi số giữa 2 i đến 2 i + 1 -1 đầu ra sẽ là 2 i .

Ví dụ

Đầu vào −Number =7

Đầu ra - Phần tử duy nhất sau hoạt động rút gọn là:4

Giải thích - Phần tử đầu tiên ở vị trí 1, v.v.

Mảng sẽ là [1 2 3 4 5 6 7]

Sau hoạt động đầu tiên:[2 4 6]

Sau hoạt động thứ hai:[4]

Đầu vào - Số =18

Đầu ra - Phần tử duy nhất sau hoạt động rút gọn là:4

Giải thích - Phần tử đầu tiên ở vị trí 1, v.v.

Mảng sẽ là [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18]

Sau hoạt động đầu tiên:[2 4 6 8 10 12 14 16 18]

Sau hoạt động thứ 2:[2 8 12 16]

Sau hoạt động thứ 3:[8 16]

Sau hoạt động thứ 4 [16]

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

Trong cách tiếp cận này, chúng tôi sẽ sử dụng một vòng lặp while để tính toán kết quả cuối cùng dựa trên công thức trên. Lấy giá trị ban đầu là 2 và di chuyển đến 2 * kết quả <=số đầu vào và nhân đôi giá trị ở mỗi lần lặp.

  • Lấy biến đầu vào là Number

  • Hàm getsingleElement (long num) lấy số đầu vào và in ra kết quả dựa trên công thức trên.

  • Lấy một kết quả thay đổi.

  • Khởi tạo kết quả bằng 2.

  • Duyệt qua bằng cách sử dụng vòng lặp while cho đến kết quả * 2 <=num.

  • Kết quả kép bên trong sẽ.

  • Ngay sau khi vòng lặp while kết thúc, chúng ta sẽ nhận được giá trị mong muốn.

  • Trả về kết quả.

  • In kết quả bên trong main.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra Kết quả sau

The single element after reduction operation is : 16