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

Số Woodall trong C ++

Trong bài toán này, chúng tôi được cung cấp một số và nhiệm vụ của chúng tôi là kiểm tra xem số đó có phải là số Woodall hay không.

Woodall number là một loại số đặc biệt có dạng,

Wn = n.2n -1

5 số Woodall đầu tiên là 1, 7, 23, 63, 159

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

X = 159

Đầu ra

Yes

Để giải quyết vấn đề này, chúng ta sẽ quan sát con số, nếu con số chẵn thì không thể là Woodall và sau đó kiểm tra số lượng. Để kiểm tra, hãy cộng số với 1 và chia đệ quy số đó cho 2. Sau mỗi lần chia đếm số lần nó bị chia hết. Và tại mỗi thời điểm, hãy kiểm tra xem số lượng có bằng số không.

Chương trình cho thấy việc triển khai giải pháp của chúng tôi,

Ví dụ

#include <iostream>
using namespace std;
bool isWoodallNumber(int x){
   if (x % 2 == 0)
      return false;
   if (x == 1)
      return true;
   x+= 1;
   int p = 0;
   while(x%2 == 0){
      x = x/2;
      p++;
      if (p == x)
         return true;
   }
   return false;
}
int main() {
   int x = 1424;
   cout<<x;
   (isWoodallNumber(x))?cout<<" is a Woodal Number":cout<<" is not a Woodal Number";
   return 0;
}

Đầu ra

1424 is not a Woodal Number