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

Kiểm tra xem một số có thể được biểu diễn dưới dạng 2 ^ x + 2 ^ y trong C ++ hay không

Ở đây chúng ta sẽ thấy, nếu chúng ta có thể biểu diễn một số dưới dạng tổng của hai lũy thừa khác không của 2. Vì vậy, chúng ta sẽ kiểm tra số N đã cho có thể được biểu diễn dưới dạng (2 x + 2 y ) trong đó x, y> 0. Giả sử một số là 10, số này có thể được biểu diễn dưới dạng 2 3 + 2 1 .

Cách tiếp cận rất đơn giản. Có hai trường hợp. Nếu số n là số chẵn, nó có thể được biểu diễn dưới dạng 2 x . Trong đó x> 0. Một trường hợp khác là N là số lẻ, nó không bao giờ có thể được biểu diễn dưới dạng tổng các lũy thừa của 2. Chúng ta không thể sử dụng lũy ​​thừa là 0, vì vậy chúng ta không thể nhận được số lẻ. đối với tất cả các số lẻ LSb của biểu diễn nhị phân của nó là 1

Ví dụ

#include <iostream>
using namespace std;
bool isSumofTwosPower(int n) {
   if((n & 1) == 0){
      return true;
   }else{
      return false;
   }
}
int main() {
   int num = 86;
   if(isSumofTwosPower(num)){
      cout << "Can be represented";
   }else{
      cout << "Cannot be represented";
   }
}

Đầu ra

Can be represented