一道算法题,用PHP实现
存:1, 4, 16, 64, 256, 1024取:-2, -8, -32, -128, -512
所以如果要存 32, 那么先存64, 再取32.
对存操作来说, 有如下序列:存1, 存2(存4取2), 存4, 8(存16取8), 存16...取序列同理.
然后对任意数n来说, 都可以用2的方次的 加合 来表示.
所以, 存n元:1. 把n表示为 2的方次的 加合;2. 对于每一个2的方次, 在存序列中 找相应的 存操作.
具体实现来说, 对n做位操作:
while(n){if(n % 2)// 做相应操作n >>= 1;}
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我之所以活到现在的全部意义,是为了此刻能对你说,我爱你,我会在你身后永远守护你。
文章 0 评论 0
接受
发布评论
评论(1)
存:
1, 4, 16, 64, 256, 1024
取:
-2, -8, -32, -128, -512
所以如果要存 32, 那么先存64, 再取32.
对存操作来说, 有如下序列:
存1, 存2(存4取2), 存4, 8(存16取8), 存16...
取序列同理.
然后对任意数n来说, 都可以用2的方次的 加合 来表示.
所以, 存n元:
1. 把n表示为 2的方次的 加合;
2. 对于每一个2的方次, 在存序列中 找相应的 存操作.
具体实现来说, 对n做位操作:
while(n){
if(n % 2)
// 做相应操作
n >>= 1;
}