在这里,我们将查看一个数字是否可以表示为两个或多个连续数字的总和。假设数字为12。可以表示为3 + 4 + 5。
有一种直接且最简单的方法可以解决此问题。如果数字是2的幂,则不能将其表示为某些连续数字的总和。我们必须牢记两个事实。
任何两个连续的数字之和为奇数,则其中一个为奇数,另一个为偶数。
第二个事实是2 n = 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