Давай разбираться. Если бы квартира в доме была 1 = 2^0, то информация, что Вася живет в этой квартире, имела бы 0 информации. Потому что, если мы заранее знаем, что Вася живет в этом доме, то сразу ясно, что в этой единственной квартире. Дополнительное сообщение об этом не несет никакой информации вообще. Если квартир 2 = 2^1, то сообщение несет 1 бит информации. 1 квартира = 0, 2 квартира = 1. Если квартир 3, 2<3<4, то есть 2^1<3<2^2, то будет 2 бита. 1кв = 00, 2кв = 01, 3кв = 10. Одного бита не хватает. И так далее. Сколько квартир в доме (в смысле - 2 в какой степени), столько бит и будет. 128 < 150 < 256, то есть 2^7 < 150 < 2^8, поэтому уточнение номера квартиры дает 8 бит информации.
Из условия видим, что для кодировки всего множества квартир в доме 7 бит достаточно, а 6 бит - мало. Значит количество квартир в доме Васи (х) должно находиться в промежутке: 2^6<x<=2^7 =>Квартир в доме Васи больше 64 но меньше или равно 128.Более точного ответа по данному условию дать нельзя.
procedure push(var ar:ty); var i,c:integer; begin c:=ar[n]; for i:=n downto 2 do ar[i]:=ar[i-1]; ar[1]:=c; end;
begin randomize; writeln('Enter K:'); readln(k); writeln('First array:'); for i:=1 to n do begin; ar[i]:=random(10); write(ar[i]:4); end; for i:=1 to k do push(ar); writeln; writeln('Final array:'); for i:=1 to n do write(ar[i]:4); end. 2)var a,i,b,r,n:integer; s,se:string;
procedure preob(var a,b,n:integer; var se:string); begin repeat b:=a mod n; a:=a div n; str(b,se); s+=se; until (a<=n-1); end;
begin readln(a); readln(n); preob(a,b,n,se); str(a,se); s+=se; for i:=1 to length(s) div 2 do begin; se:=s[i]; s[i]:=s[length(s)-i+1]; s[length(s)-i+1]:=se[1]; end; val(s,r,a); write(r); end.
procedure push(var ar:ty); var i,c:integer; begin c:=ar[n]; for i:=n downto 2 do ar[i]:=ar[i-1]; ar[1]:=c; end;
begin randomize; writeln('Enter K:'); readln(k); writeln('First array:'); for i:=1 to n do begin; ar[i]:=random(10); write(ar[i]:4); end; for i:=1 to k do push(ar); writeln; writeln('Final array:'); for i:=1 to n do write(ar[i]:4); end. 2)var a,i,b,r,n:integer; s,se:string;
procedure preob(var a,b,n:integer; var se:string); begin repeat b:=a mod n; a:=a div n; str(b,se); s+=se; until (a<=n-1); end;
begin readln(a); readln(n); preob(a,b,n,se); str(a,se); s+=se; for i:=1 to length(s) div 2 do begin; se:=s[i]; s[i]:=s[length(s)-i+1]; s[length(s)-i+1]:=se[1]; end; val(s,r,a); write(r); end.
Потому что, если мы заранее знаем, что Вася живет в этом доме, то сразу ясно, что в этой единственной квартире.
Дополнительное сообщение об этом не несет никакой информации вообще.
Если квартир 2 = 2^1, то сообщение несет 1 бит информации. 1 квартира = 0, 2 квартира = 1.
Если квартир 3, 2<3<4, то есть 2^1<3<2^2, то будет 2 бита. 1кв = 00, 2кв = 01, 3кв = 10. Одного бита не хватает.
И так далее. Сколько квартир в доме (в смысле - 2 в какой степени), столько бит и будет.
128 < 150 < 256, то есть 2^7 < 150 < 2^8, поэтому уточнение номера квартиры дает 8 бит информации.