![]() |
![]() |
![]()
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] |
|
|
![]() |
![]()
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] |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 01:00 |