Как преобразовать целое число в массив сбалансированной суммы?

Мы имеем целое число предположим 28. Теперь нам нужен массив сбалансированной суммы, такой как $ array = (10,10,8), когда мы хотим, чтобы это максимально возможное число 10 и как мудрый, если максимально возможное число равно 5, массив должен быть как (5, 5,5,5,5,3). Помоги мне.

2 ответа

Внимательный.

$var = 28;
$max_lmt = 10;
$i = 1;
while($i) {
 $tmp = $var;
 $var = $var - $max_lmt;
 if($var > 0)
 $arr[] = $max_lmt;
 else {
 $arr[] = $tmp;
 $i = 0;
 }
}
print_r($arr);

Смотрите этот ВЫХОД


function getBalancedSum($number, $max)
 {
 $array = array();
 if ($number != 0 
 && $max != 0
 && (($number > 0 && $max > 0)||($number < 0 && $max < 0)))
 {
 if ($number / $max > 1)
 $array = array_fill(0, $number / $max, $max);
 if ($number % $max)
 $array[] = $number % $max;
 }
 return $array;
 }

echo(json_encode(getBalancedSum(28, 10))); // [10,10,8]
echo(json_encode(getBalancedSum(28, 7))); // [7,7,7,7]
echo(json_encode(getBalancedSum(28, 30))); // [28]
echo(json_encode(getBalancedSum(0, 10))); // []
echo(json_encode(getBalancedSum(10, 0))); // []
echo(json_encode(getBalancedSum(28, -10))); // []
echo(json_encode(getBalancedSum(-28, -10))); // [-10,-10,-8]

Json использовал только для вывода.

licensed under cc by-sa 3.0 with attribution.