созданный на компьютере текст занимает 160 стр. на каждой странице размещается 32 строки в каждой строке 64 символа рассчитать объем информации который займет этоттекст ответ записатт а кб
Самая оптимальная стратегия угадывания - дихотомия, то есть деление отрезка пополам и задавание вопроса больше? (или меньше?)
Например, загадано 50
Последовательность
32 64/2 больше
48 (32+64)/2 больше
56 (48+64)/2 меньше
52 (48+56)/2 меньше
50 (48+52)/2 попал
Теперь о задаче. Вопрос очень некорректный, если бы он звучал, как сколько попыток нужно сделать, чтобы угадать? , то решение простое
64 = 2^6, поэтому нужно 6 попыток 6 = 110b, значит 3 бит достаточно, чтобы в них разместить это количество попыток.
НО в задаче вопрос-то другой! Потому что в процессе отгадывания на каждом шаге нужно знать 1. Концы отрезка, 2. ответ
Концы это 6 бит и 6 бит +ответ 1 бит, итого 13 бит на шаг *6 = 78 бит. Можно ещё сократить немного, так как в последующем вопросе используется информация из предыдущего(один из концов интервала).
Уточни, что имеется в виду под фразой "какое количество информации", иначе задача неопределена и допускает многочисленные толкования.
Var a:array of integer; n,i,p,i1,i2: integer; begin write('n = '); readln(n); SetLength(a,n); Randomize; a[0]:=random(50)+100; write(a[0]:4); for i:=1 to n-1 do begin a[i]:=a[i-1]-random(11); write(a[i]:4); end; writeln; p:=a[0]-a[n-1]; writeln('p = ',p); i1:=0; i2:=n-1; repeat i:=(i1+i2) div 2; if a[i]>p then i1:=i1+1; if a[i]<p then i2:=i2-1; until (a[i]=p)or(i1>=i2); if a[i]=p then writeln('i = ',i) else writeln('Искомого элемента нет'); end.
Пример: n = 20 142 139 135 129 120 120 120 113 107 106 104 99 89 88 81 72 71 70 60 54 p = 88 i = 13
Самая оптимальная стратегия угадывания - дихотомия, то есть деление отрезка пополам и задавание вопроса больше? (или меньше?)
Например, загадано 50
Последовательность
32 64/2 больше
48 (32+64)/2 больше
56 (48+64)/2 меньше
52 (48+56)/2 меньше
50 (48+52)/2 попал
Теперь о задаче. Вопрос очень некорректный, если бы он звучал, как сколько попыток нужно сделать, чтобы угадать? , то решение простое
64 = 2^6, поэтому нужно 6 попыток 6 = 110b, значит 3 бит достаточно, чтобы в них разместить это количество попыток.
НО в задаче вопрос-то другой! Потому что в процессе отгадывания на каждом шаге нужно знать 1. Концы отрезка, 2. ответ
Концы это 6 бит и 6 бит +ответ 1 бит, итого 13 бит на шаг *6 = 78 бит. Можно ещё сократить немного, так как в последующем вопросе используется информация из предыдущего(один из концов интервала).
Уточни, что имеется в виду под фразой "какое количество информации", иначе задача неопределена и допускает многочисленные толкования.
n,i,p,i1,i2: integer;
begin
write('n = ');
readln(n);
SetLength(a,n);
Randomize;
a[0]:=random(50)+100;
write(a[0]:4);
for i:=1 to n-1 do
begin
a[i]:=a[i-1]-random(11);
write(a[i]:4);
end;
writeln;
p:=a[0]-a[n-1];
writeln('p = ',p);
i1:=0; i2:=n-1;
repeat
i:=(i1+i2) div 2;
if a[i]>p then i1:=i1+1;
if a[i]<p then i2:=i2-1;
until (a[i]=p)or(i1>=i2);
if a[i]=p
then writeln('i = ',i)
else writeln('Искомого элемента нет');
end.
Пример:
n = 20
142 139 135 129 120 120 120 113 107 106 104 99 89 88 81 72 71 70 60 54
p = 88
i = 13