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

C++에서 숫자를 연속된 숫자의 합으로 표현할 수 있는지 확인

<시간/>

여기서 우리는 하나의 숫자가 두 개 이상의 연속된 숫자의 합으로 표현될 수 있는지 여부를 확인할 것입니다. 숫자가 12라고 가정합니다. 이것은 3+4+5로 나타낼 수 있습니다.

이 문제를 해결하는 직접적이고 가장 쉬운 방법이 있습니다. 숫자가 2의 거듭제곱이면 연속된 숫자의 합으로 표현할 수 없습니다. 명심해야 할 두 가지 사실이 있습니다.

  • 연속된 두 숫자의 합이 홀수이면 그 중 하나는 홀수이고 다른 하나는 짝수입니다.
  • 두 번째 사실은 2 n 입니다. =2 (n-1) + 2 (n-1) .

예시

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

출력

Can be represented