ЕВгений_денис643
?>

Язык програмирования paskal/ : дано действительное число - цена 1 кг конфет вывести стои 1.2, 1.4 2 кг конфет

Информатика

Ответы

Эдгеева219
    program for4;
     
    var
      i: integer;
      price_one: real;
     
    begin
      read(price_one);
      for i := 1 to 10 do writeln(i, ' кг. стоит - ', price_one * i, ' ');
    end.
X2755070

ответ: 3

Объяснение:

Тот факт, что код удовлетворяет условию Фано, означает, что ни одно кодовое слово не является началом другого (например, т.к. для кодирования буквы А используется цифра 0, то никакое другое кодовое слово не может начинаться с нуля, ведь тогда кодовое слово для А будет началом другого кодового слова).

Итак, кодовые слова для букв Б, В и Г не могут начинаться с нуля. Так как код двоичный, все они начинаются с единицы. Наша задача — найти три последовательности, которые начинаются с единицы и при этом имеют наименьшее возможное число символов (цифр).

Закодировать какую-либо букву одним символом, единицей, мы не можем, потому что в этом случае уже не удастся закодировать другие буквы (из-за условия Фано; к тому же, буква, закодированная одной единицей, была бы началом кодового слова для Б (110), что опять не удовлетворяет условию Фано).

Если использовать кодовые слова длиной в 2 символа, получится закодировать только две буквы, ведь таких кодовых слова всего два: 11 и 10. Составить третье кодовое слово не позволит условие Фано.

Если используем кодовые слова длиной в 3 символа, сможем закодировать все буквы, например, присвоить букве Г кодовое слово 111, а букве Б, как и сказано в условии, кодовое слово 110, и тогда свободные слова ещё останутся. Но в этом случае остаётся ещё одно кодовое слово из двух символов, не являющееся началом другого, — 10 (т.к. А = 0, Б = 110, Г = 111). Присвоим это кодовое слово оставшейся букве В.

Итак, присвоить всем трём буквам (кроме А) кодовые слова длиной 2 символа невозможно, а если все три кодовых слова будут длиной в 3 символа, то их последовательность не будет иметь наименьшее число символов (как нужно в задании), поэтому вариант, когда одна буква закодирована двумя символами, а две оставшиеся — тремя, даёт при сложении числа символов последовательность наименьшей длины.

Получается, что длины кодовых слов букв:

А — 1 символ (0)

Б — 3 символа (110)

В — 2 символа (10)

Г — 3 символа (111)

При кодировании последовательности из этих букв (например, АБВГ, порядок в данном случае не важен) каждая буква заменяется её кодовым словом.

Значит, число символов в последовательности равно общему количеству символов во всех четырёх кодовых словах и составляет

1 + 3 + 2 + 3 = 9 (символов).

ответ: 3

Sukharev-Achkasov
Из условия Фано следует, что в префиксном неравномерном двоичном коде, предусматривающем однозначное декодирование, ни одно кодовое слово не может быть началом другого. 

Таким образом, оставшиеся три кода не могут быть началом кода буквы Б, и началами кодов друг друга.

То есть коды 0 и 00 отпадают сразу, т.к. это начала буквы Б.

Если предположить, что один из кодов равен 1, и что нам нужны кратчайшие коды, значит оставшиеся коды могут быть только 01 и 011.

Если предположить, что коды двузначны, тогда кодами могут быть 01, 10 и 11.

В первом случае суммарная длина кодов равна 1+2+3+3 = 9, во втором случае - 2+2+2+3 = 9.

Оба варианта подходят, кратчайшая суммарная длина - 9

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

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

Язык програмирования paskal/ : дано действительное число - цена 1 кг конфет вывести стои 1.2, 1.4 2 кг конфет
Ваше имя (никнейм)*
Email*
Комментарий*