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 tổng các số liên tiếp trong C ++ hay không

Ở đây chúng ta sẽ xem liệu một số có thể được biểu diễn dưới dạng tổng của hai hoặc nhiều số liên tiếp hay không. Giả sử một số là 12. Số này có thể được biểu diễn dưới dạng 3 + 4 + 5.

Có một phương pháp trực tiếp và dễ dàng nhất để giải quyết vấn đề này. Nếu một số là lũy thừa của 2, thì nó không thể được biểu thị bằng tổng của một số số liên tiếp. Có hai sự thật mà chúng ta phải ghi nhớ.

  • Tổng của hai số liên tiếp bất kỳ là số lẻ, khi đó một trong số chúng sẽ là số lẻ, một số khác là số chẵn.
  • Sự thật thứ hai là 2 n =2 (n-1) + 2 (n-1) .

Ví dụ

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

Đầu ra

Can be represented