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

C++에서 숫자를 2^x + 2^y로 표현할 수 있는지 확인

<시간/>

여기서 우리는 숫자를 2의 0이 아닌 두 거듭제곱의 합으로 나타낼 수 있는지 확인합니다. 따라서 주어진 숫자 N이 (2 x + 2 y ) 여기서 x, y> 0. 숫자가 10이라고 가정하면 2 3 으로 나타낼 수 있습니다. + 2 1 .

접근 방식은 간단합니다. 두 가지 경우가 있습니다. 숫자 n이 짝수이면 2 x 로 나타낼 수 있습니다. . 여기서 x> 0. 또 다른 경우는 N이 홀수이고 2의 거듭제곱의 합으로 표시될 수 없다는 것입니다. 거듭제곱을 0으로 사용할 수 없으므로 홀수를 얻을 수 없습니다. 모든 홀수에 대해 이진 표현의 LSb는 1

예시

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

출력

Can be represented