由1,2,4,8,16...相加组成的数,如何快速确定组合数

有一个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的组成数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值