Для передачи по каналу связи сообщения, состоящего только из букв А,Б,В,Г решили использовать неравномерный код: А=01, Б=1, В=001. Как нужно закодировать букву Г, чтобы длина кода была минимальной и допускалось однозначное разбиение кодированного сообщения на буквы?
Дан массив, содержащий 70 целых чисел. Опишите на одном из языков программирования алгоритм,
позволяющий найти и вывести наименьшее содержащееся в массиве положительное число, десятичная
запись которого оканчивается цифрой 7. Гарантируется, что в массиве есть хотя бы один
положительный элемент, десятичная запись которого оканчивается цифрой 7. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но
разрешается не использовать часть из них.
1
2
3
4
5
6
7
8
9
const N=70;
var
a: array [1..N] of integer;
i, j, m: integer;
begin
for i:=1 to N do
что-то подобное?
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.