题目: 给定你一个数字 如:15 15可分解为 7+8 4+5+6 1+2+3+4+5 再如: 8 8不可分解为任何连续的正整数之和 所以输出NONE 此题就是给定一个数字如果这个数字可以分解为几个连续的正整数之和那么就输出所有的形式,如果不能就输出NONE
今天这道题困扰了我好久,最后发现,一开始求和的时候算错了.
原因是我这样计算的:
而实际上应该是:
下面是我最后成功解决这个问题的思路和代码:
这道题目可以用到数学中最基础的等差公式的方式:设给定的数字为S
所以他们成绩除2得出的数肯定得有奇数因子,而2^n不可能有奇数因子,所以不能被整除.*/
n如果为2的n次方那么他的二进制表示肯定是第一位为1后面都是0
n - 1恰好是最后一个是1其余多是0所以n&(n - 1)肯定等于0
所以在这里我们可以采用位运算&来判定*/