1) Иван составляет 3-буквенные слова из букв А, Б, В, Г, Д, Я. Буква Я в слове может быть только одна (или ни одной) и только на первой или второй позициях. Сколько различных кодовых слов может составить Иван? 2) Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г, Д, Е, Ж, З, И, Й. решили использовать неравномерный двоичный код, удовлетворяющий условию Фано. Для букв А, Б, В, Г, Д, Е, Ж, З, И использовали соответственно кодовые слова 111, 0100, 1100, 0010, 0001, 0011, 0110, 1001, 1010. Укажите кратчайшее возможное кодовое слово для буквы Й, при котором код будет допускать однозначное декодирование. Если таких кодов несколько, укажите код с наименьшим числовым значением.
3) Документ объёмом 10 Мбайт можно передать с одного компьютера на другой двумя
А) сжать архиватором-1, передать архив по каналу связи, распаковать;
Б) сжать архиватором-2, передать архив по каналу связи, распаковать;
Какой быстрее и насколько, если
средняя скорость передачи данных по каналу связи составляет 220 бит в секунду,
объём документа, сжатого архиватором-1, равен 20% от исходного,
на сжатие документа архиватором-1 требуется 18 секунд, на распаковку - 2 секунды,
объём документа, сжатого архиватором-2, равен 10% от исходного,
на сжатие документа архиватором-2 требуется 26 секунд, на распаковку - 4 секунды?
В ответе напишите букву А, если А быстрее, или Б, если быстрее Б. Сразу после буквы напишите на сколько секунд один быстрее другого.
1. 0..65534 -> 32767
2. 0..32766 -> 16383
3. 0..16382 -> 8191
4. 0..8190 -> 4095
5. 0..4094 -> 2047
6. 2048..4094 -> 3071
7. 2048..3070 -> 2559
8. 2560..3070 -> 2815
9. 2816..3070 -> 2943
10. 2944..3070 -> 3007
11. 2944..3006 -> 2975
12. 2976..3006 -> 2991
13. 2992..3006 -> 2999
14. 3000..3006 -> 3003
15. 3000..3002 -> 3001
Если лень перебирать вручную, можно воспользоваться программой
var k,l,r,x,f:integer;
begin
f := 3001;
l := 0;
r := 65534;
x := (l + r) div 2;
k := 1;
while (x <> f) and (l < r) do
begin
writeln(k,' ',l,' ',r,' ',x);
k := k + 1;
if f < x then r := x - 1
else l := x + 1;
x := (l + r) div 2
end;
writeln(k,' ',l,' ',r,' ',x);
end.
var
a: array[1..l] of integer;
d: array[1..l] of real;
i, otr, k, m: integer;
begin
otr:=0; k:=0; m:=0;
//считаем массив а
for i:=1 to l do
begin
readln(a[i]);
//если ввели положительное число,увеличим перем. otr на 1
if a[i] < 0 then
inc(otr);
//если ввели отрицательное число,увеличим перем. k на 1
//и к переменной m прибавим элемент
if a[i] > 0 then
begin
inc(k);
inc(m, a[i]);
end;
end;
//заполним массив d
for i:=1 to l do
//если индекс четный, присвоим элементу otr
//иначе присвоим среднее арифметическое
if i mod 2 = 0 then
d[i] := otr
else
d[i] := m/k;
end.