여기서 우리는 숫자를 2의 0이 아닌 두 거듭제곱의 합으로 나타낼 수 있는지 확인합니다. 따라서 주어진 숫자 N이 (2 x + 2 y ) 여기서 x, y> 0. 숫자가 10이라고 가정하면 2 3 으로 나타낼 수 있습니다. + 2 1 .
접근 방식은 간단합니다. 두 가지 경우가 있습니다. 숫자 n이 짝수이면 2x로 나타낼 수 있습니다. 여기서 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