有一个long型数据,它可能由1,2,4,8,16...等数相加组成,如何用最少的循环次数确认出它由哪几个数组成?
如:9 由 1、8 组成(如何通过两次循环得出结论来:2^0 + 2^3 , 最终结果包含0 和 3)
又如:521 由 1、8、512 组成(如何通过三次循环得出结论来:2^0 + 2^3 + 2^9, 最终结果包含0 、 3 和 9)
可以借助数学函数log来实现:
根据上面的思路,可以使用以下(不需要循环)方法来判断一个数是不是另外一个数的组成树,如判断 1 是521的组成数