在这个问题中,我们得到了一个数字,我们的任务是检查该数字是否为Woodall数字。
Woodall数字是一种特殊的数字,其形式为
Wn = n.2n -1
第一5伍德尔号码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