М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации

Нужна реализация функции на php. суть такая, есть массив напр: $ar['310']=0.5; $ar['311']=0.375; $ar['312']=0.1; в массиве может быть как больше так и меньше элементов, необходимо высчитать все различные комбинации сумм элементов, чтобы в результате получилось число 1.5. в данном примере должно получится 0.5+0.5+0.5=1.5 0.5+0.5+0.1+0.1+0.1+0.1+0.1=1.5 0.5+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1=1.5 0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0. 1+0.1+0.1=1.5 0.375+0.375+0.375+0.375=1.5 нужно написать функцию, на входе в которую будет передаваться массив значений и число 1.5 (может быть любое другое), а на выходе массив элементов с ключами, которые мы передали вначале. на выходе в общем должно получиться что-то типо такого $arr[0]="310,310,310" $arr[0]="310,310,312,312,312,312,312" $arr[0]="310,312,312,312,312,312,312,312,312, 312 ,312" $arr[0]="312,312,312,312,312,312,312,312,312, 312 ,312,312,312,312,312" $arr[0]="311,311,311,311"

👇
Ответ:
Сергей965
Сергей965
23.02.2023
<?php
  $result = array();
  $arr = array ('310'=>0.5, '311'=>0.375, '312'=>0.1);
  
  function rec($str) {
    $sum = 0;
    foreach ($str as $i) #Вычисляем уже имеющуюся сумму
      $sum += $GLOBALS["arr"][$i];
    if ($sum == 1.5)
      $GLOBALS["result"][] = $str;
    if ($sum > 1.5) return;
    foreach ($GLOBALS["arr"] as $key=>$value) {
      $hello = $str; #Не знаю, насколько это легально, но заработало только так...
      $hello[] = $key;
      rec($hello);
    }
  }
  
  if (min(array_values($arr)) <= 0) die(); #Бесконечнная рекурсия должна быть предотвращена
  rec(array());
  
  foreach ($result as &$value) #Переделываем массив массивов в массив строк
    $value = implode(', ', $value);
  unset($value);
  
  print_r($result);
?>
4,4(99 оценок)
Открыть все ответы
Ответ:
natalyacomandi
natalyacomandi
23.02.2023
Будут вопросы - задавайте.

type a = array[0..999] of Integer;
var B, num: a; var N, k: integer; 
 
procedure SimpleNumber(B: a);
begin
    for var i := 0 to N-1 do begin
        for var j := 2 to 9 do begin
            if B[i] mod num[j] <> 0 then
                k += 1;
        end;
        if k = 8 then begin
             write('Есть простое число');
            break;
        end
        else if (k <> 8) and (i = N-1) then 
           write('Нет простых чисел');
        k := 0;
    end;
end;

begin
    for var i := 2 to 9 do begin
        num[i] := i;
    end;
    read(N);
    for var i := 0 to N-1 do 
        read(B[i]);
    SimpleNumber(B);
end.
4,5(11 оценок)
Ответ:
ViktoriaUiliams
ViktoriaUiliams
23.02.2023

ответ: сообщение о результатах лотереи "6 из 36" несёт больше информации.

Объяснение:

Используем формулы на мощность алфавита:

Где i - вес символа, а N - мощность алфавита (количество букв в нём).

Узнаем информационный вес символа каждой лотереи:

Первая

Нужно взять минимально возможное целое i, чтобы выражение было равно или больше мощности алфавита.

2⁶ = 64, значит один символ весит 6 бит.

6 × 6 = 36 бит - информационный объём первой лотереи.

Вторая

2⁶ = 64 бита, значит один символ весит 6 бит.

6 × 5 = 30 бит - информационный объём второй лотереи.

4,4(33 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ