Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หมายเลข Woodall ใน C++


ในปัญหานี้ เราได้รับหมายเลขและหน้าที่ของเราคือตรวจสอบว่าหมายเลขนั้นเป็นหมายเลข Woodall หรือไม่

หมายเลขลายไม้ เป็นตัวเลขชนิดพิเศษที่มีรูปแบบ

Wn = n.2n -1

5 หมายเลข Woodall แรกคือ 1, 7, 23, 63, 159

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

อินพุต

X = 159

ผลลัพธ์

Yes

เพื่อแก้ปัญหานี้ เราจะสังเกตตัวเลข ถ้าตัวเลขเป็นคู่ จะไม่สามารถ Woodall แล้วตรวจสอบหมายเลข ในการตรวจสอบ ให้บวกตัวเลขด้วย 1 แล้วหารตัวเลขซ้ำด้วย 2 หลังจากที่แต่ละส่วนนับจำนวนครั้งที่หารลงตัวแล้ว และในแต่ละจุดให้ตรวจสอบว่าการนับเท่ากับตัวเลขหรือไม่

โปรแกรมแสดงการใช้งานโซลูชันของเรา

ตัวอย่าง

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

ผลลัพธ์

1424 is not a Woodal Number