|
Xs0ulJun 6, 2015 via Android
1
看看十进制整数转换为二进制的算法
|
|
wbingeekJun 6, 2015
2
除二取余
|
|
hpengJun 6, 2015 via Android
3
算二进制位数的1。位运算即可
|
|
4
能给个算法么?
function count($num){ // $num = 13 …… return $result; // array[1,4,8] } |
|
zhjitsJun 6, 2015 via Android
5
|
|
ebony0319Jun 6, 2015 via Android
8
说错了,但是二楼是正解
|
|
9
$i = 1;
$result = array(); while($num){ if($num & 1){ $result[] = $i; } $i *= 2; $num /= 2; } |
|
zyueJun 6, 2015
10
不就是转为二进制么
|
|
11
php有现成的函数转二进制。话说直接求代码真是个不好的方式,至少这个问题很简单。
function count_a($num) { $result = []; foreach (array_reverse(str_split(decbin($num))) as $k=>$v ) { if ($v) { $result[] = 1<<$k; } } return $result; // array[1,4,8] } |
|
12
toString(2)
|
|
b821025551bJun 6, 2015
13
加号写成按位与也是醉了,我反应半天才反应过来
|
|
imn1Jun 6, 2015
14
换成二进制,看哪位有1就知道了
这是用整数作为权限表常见方法 |
|
15
|
|
JayleeJun 6, 2015
17
求子集
|
|
xff1874Jun 6, 2015
18
1 先排序
2 用贪婪算法 |
|
327beckhamJun 7, 2015
19
算法的话,加减乘除的速度有点慢了。用位运算的方式来弄吧。
|
|
msg7086Jun 7, 2015
20
发个ruby的好了
def bin n l = [] while n > 0 do m, n = n, n & (n-1); l << m - n end l end p bin 15 #-> [1, 2, 4, 8] |
|
msg7086Jun 7, 2015
21
或者写成one line的话
bin = -> (n) {Enumerator.new{|e| while n > 0 do m, n = n, n & (n-1); e.yield m - n end}.to_a} p bin.call 15 #-> [1, 2, 4, 8] |