Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [algorytm] rozkładanie sumy potęg 2
Forum PHP.pl > Forum > PHP
chfast
Mamy sumę potęg liczby 2. Przykład: 1+4+32+1024 = 1061. Jak taką liczbę rozłożyć spowrotem na składniki sumy?

[update]
Wymyśliłem pewien sposób, jednak nie jestem zadowolony. Żeby działał konieczna jest znajomość przedziału w jakim znajdują się składniki sumy.
[php:1:d64340bf5b]<?php
$num_array = array(1024,512,256,128,64,32,16,8,4,2,1);
$sum = 1061;
foreach($num_array as $num)
if(($sum-$num)>=0)
{
$result[] = $num;
$sum -= $num;
}
?>[/php:1:d64340bf5b]
adwol
Cytat
Mamy sumę potęg liczby 2. Przykład: 1+4+32+1024 = 1061. Jak taką liczbę rozłożyć spowrotem na składniki sumy?

[php:1:21d1985f63]<?php
$t = array();
$s = sprintf("%b", $liczba);
for ($b = 1, $i = strlen($s) - 1; $i >= 0; $i--, $b*=2)
if ($s[$i])
$t[] = $b;
print implode('+', $t) . "n";
?>[/php:1:21d1985f63]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.