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

C++의 Woodall 수

<시간/>

이 문제에서는 번호가 주어지고 그 번호가 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