Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [algorytm] rozkładanie sumy potęg 2
chfast
post
Post #1





Grupa: Zarejestrowani
Postów: 222
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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]
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
adwol
post
Post #2





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


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]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 01:00