输入: 1-15 或 64-79 范围内的任何数字,它们是(1,2,4, 8,64)任何组合
输出:此列表中的整数数组:( 1,2,4,8,64 ),其总和等于输入数字。
e.g。
答案 0 :(得分:1)
由于您未在问题中包含代码,因此没有人可以帮助您处理代码。但是这里有一个通用的方法,没有任何代码可以解决这个问题。
从您的输入数字和一个空数组开始,以保存sum元素。以递减顺序迭代您的加数数组,将每个加数数组附加到sum数组并从输入数字中减去它,直到输入数字达到零。
答案 1 :(得分:-2)
mkasberg提供了解决方案:
$in = 72;
$out = array();
$a = array_reverse(str_split((string)decbin($in)));
foreach($a as $k => $v){
if ($v != "0") array_push($out, pow(2,$k));
}