检查数字能否表示为 C++ 中连续数字的和
在这里,我们将了解一个数字是否可以表示为两个或多个连续数字之和。假设一个数字是 12。它可以表示为 3+4+5。
解决这个问题有一个直接且最简单的方法。如果一个数字是 2 的幂,则它不能表示为一些连续数字的和。我们需要记住两个事实。
- 任何两个连续数字的和都是奇数,其中一个为奇数,另一个为偶数。
- 第二个事实是 2n = 2(n-1) + 2(n-1)。
示例
#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"; } }
输出
Can be represented
广告