Galina
?>

Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г и Д, решили использовать неравномерный двоичный код, позволяющий однозначно декодировать двоичную последовательность, появляющуюся на приемной стороне канала связи. Для букв А, Б и В использовали такие кодовые слова: А — 0, Б — 10, В — 110. Какими кодовыми словами могут быть закодированы буквы Г и Д? Код должен удовлетворять свойству однозначного декодирования. Если можно использовать разные варианты кодовых слов, укажите кратчайшие из них. Решение задачи представьте с бинарного дерева.

Информатика

Ответы

nuralievelsh
1) Допустим, бумагу мы сложим в бак 3. Это будет 83 + 58 = 141.
Тогда в бак 2 надо сложить стекло или жесть.

1) а) Допустим, мы в бак 2 сложили стекло. Это будет 52 + 85 = 137.
Тогда в бак 1 кладем жесть. Это будет 95 + 75 = 170.
Всего 141 + 137 + 170 = 448 перемещений.

1) б) Допустим, мы в бак 2 сложили жесть. Это будет 64 + 75 = 139.
Тогда в бак 1 кладем стекло. Это будет 98 + 85 = 183.
Всего 141 + 139 + 183 = 463 > 448.

2) Допустим, бумагу мы сложили в бак 2. Это опять 83 + 58 = 141.
2) а) Кладем в бак 3 стекло. Это будет 98 + 52 = 150.
Тогда в бак 1 кладем жесть. Это будет 95 + 75 = 170.
Всего 141 + 150 + 170 = 461 > 448.

2) б) Кладем стекло в бак 1. Это будет 98 + 85 = 183.
Тогда в бак 3 кладем жесть. 64 + 95 = 159
Всего 141 + 183 + 159 = 483 > 448.

3) Положим бумагу в бак 1. Это будет 83 + 83 = 166.
3) а) Положим стекло в бак 2. Это будет 52 + 85 = 137.
Тогда жесть пойдет в бак 3. 64 + 95 = 159.
Всего 166 + 137 + 159 = 465 > 448.

3) б) Положим стекло в бак 3. Это будет 52 + 98 = 150.
Тогда жесть пойдет в бак 2. Это будет 64 + 75 = 139.
Всего 166 + 150 + 139 = 455 > 448.

Я рассмотрел все 6 вариантов разложить 3 мусора по 3 бакам.
ответ: минимальное количество перемещений равно 448.
atamanov5
// PascalABC.NET 3.1, сборка 1179 от 29.02.2016
procedure GetProdNeg(a:array of integer; var p:real);
// произведение отрицательных элементов
begin
  p:=a.Where(x->x<0).Aggregate(1.0,(p,e)->p*e)
end;

function IsPrime(n:integer):boolean:=
  Range(2,Round(sqrt(n))).All(i->n mod i<>0);

procedure ArrPrime(n:integer; var a:array of integer);
// массив простых чисел не больших n
begin
  a:=Range(2,n).Where(i->IsPrime(i)).ToArray
end;

begin
  var n:=ReadInteger('n=');
  var a:=ArrRandom(n,-50,50); a.Println;
  var r:real;
  GetProdNeg(a,r);
  Writeln('Произведение ',r);
  n:=ReadInteger('n=');
  var b:array of integer;
  ArrPrime(n,b);
  b.Println
end.

Тестовое решение:
n= 15
27 -7 -36 40 -15 -21 -47 -28 -12 45 3 -38 -15 1 -39
Произведение 27866837980800
n= 300
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г и Д, решили использовать неравномерный двоичный код, позволяющий однозначно декодировать двоичную последовательность, появляющуюся на приемной стороне канала связи. Для букв А, Б и В использовали такие кодовые слова: А — 0, Б — 10, В — 110. Какими кодовыми словами могут быть закодированы буквы Г и Д? Код должен удовлетворять свойству однозначного декодирования. Если можно использовать разные варианты кодовых слов, укажите кратчайшие из них. Решение задачи представьте с бинарного дерева.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

karpachevamarina
AndrukhovichKonovalov
Olesyamilenina8
billl24
shuramuji
Vika-simonenko
Yarovitsin
ilma20168
Kashtelyan Tamara847
Оксана Анна
marinazubcko16729
taanaami75
manimen345
rinat
Мечиславович_Кварацхелия1988