这道题目看着很难,但实现起来很简单,我们可以使用位运算的方式来实现;
首先需要判断这个数的 奇偶性奇偶性奇偶性 ,2的次方都是偶数,所以奇数是无法被分解的
然后就可以进行位运算了,但先要了解背景知识:
这段代码可以将 powerpowerpower 赋值为 2n2^{n}2n(222 的 nnn 次方),<<<<<< 是左移的意思
因为 102410241024 之内最大的 222 的次方是2272^{27}227 ( 222 的 272727 次方),所以我们从大到小遍历,如果 222 的 iii 次方小于 nnn 那么就把 2i2^i2i 从 nnn 中分离出去
完整代码: