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

Biểu diễn một số dưới dạng tổng của số giả-nhị phân tối thiểu có thể có trong C ++

Hướng dẫn này sẽ thảo luận về cách biểu diễn một số dưới dạng tổng các số nhị phân giả tối thiểu. Số giả nhị phân là những số chỉ bao gồm các chữ số nhị phân, tức là, 0 và 1. Ví dụ về số giả nhị phân là 00, 11, 10, 100, 111, 1011, v.v.

Dưới đây là một số ví dụ về các số được biểu thị dưới dạng tổng các số nhị phân giả.

Input : 23
Output : 11 + 11 + 1
Explanation : 23 = 11 + 11 + 1, sum of pseudo-binary numbers(11, 11, 1) is 23.

Input : 50
Output : 10 + 10 + 10 + 10 + 10

Phương pháp tiếp cận để tìm giải pháp

Dưới đây là một trong những cách tiếp cận tốt nhất để tìm số nhị phân giả tối thiểu để biểu diễn N.

  • Lấy một số X và cập nhật các chữ số của nó thành 1 hoặc 0 theo các chữ số của số N.

  • Kiểm tra chữ số ở mỗi vị trí của N,

    • Nếu nó là 0, thì hãy cập nhật vị trí X đó thành 0.

    • Nếu nó không phải là 0, hãy cập nhật vị trí X đó thành 1.

    • Giả sử N =32, thì X sẽ là 11

  • Khi đó X sẽ là một số nhị phân giả.

  • Bây giờ giảm N theo X và lặp lại bước 1 cho đến khi N trở thành 0.

Ví dụ

Mã C ++ cho phương pháp tiếp cận trên

#include<iostream>
using namespace std;
int main(){
   int N = 51;
   // find a pseudo-binary number until N becomes 0.
   cout << "pseudo-binary representation of " << N << " is: ";
   while (N > 0){                
      // finding X which contains 0's and 1's according to N.
      int temp = N;
      int X = 0, bit = 1;
      // checking each place of N for zero or non-zero.
      while (temp!=0){
      int last_dig = temp % 10;
      temp = temp / 10;
      if (last_dig != 0)
         X += bit;
         bit *= 10;
      }
      // printing one pseudo-binary number.
      cout << X << " ";
      // Updating N by subtracting with X.
      N = N - X;
       
   }
   return 0;
}

Đầu ra

pseudo-binary representation of 51 is: 11 10 10 10 10

Hiểu mã

  • Vòng lặp while bên ngoài để lấy N và chọn các chữ số ở mọi nơi để tìm X.

  • Chúng tôi đang cập nhật giá trị của biến tạm thời với N và Vòng lặp bên trong để kiểm tra từng vị trí của biến tạm thời và cập nhật vị trí đó của biến X.

  • Giá trị in của X vì đó là một số nhị phân giả.

  • Chúng tôi cập nhật N bằng cách trừ với X và quay lại vòng lặp bên ngoài cho đến khi N trở thành 0.

Kết luận

Trong hướng dẫn này, chúng tôi đã thảo luận về cách chúng tôi có thể biểu diễn một số dưới dạng tổng các số nhị phân giả tối thiểu có thể có. Chúng tôi đã thảo luận về cách tiếp cận để tìm tất cả các số giả nhị phân. Chúng tôi cũng đã thảo luận về mã C ++ tương tự, chúng có thể viết bằng bất kỳ ngôn ngữ lập trình nào khác như C, Java, Python, v.v. Chúng tôi hy vọng bạn thấy hướng dẫn này hữu ích.