Сообщение на русском языке было первоначально записано в 16-битном коде Unicode. При его перекодировке в 8-битную кодировку КОИ-8 информационное сообщение уменьшилось на 960 бит. Какова длина сообщения в символах?
Изначально сообщение было записано в 16-битном коде, затем ее перекодили в 8-битный, то есть, количество информации уменьшиться в 2 раза. Так как нам сказано, что сообщение уменьшилось на 960 бит, следовательно, 960 * 2 = 1920 бит - объём сообщения в 16-битном коде.
// PascalABC.NET 3.0, сборка 1111 const alpha=['a'..'z']; digits=['0'..'9']; var na,nd,i:integer; s:string; begin na:=0; nd:=0; Write('Введите текст: '); Readln(s); for i:=1 to Length(s) do if s[i] in alpha then Inc(na) else if s[i] in digits then Inc(nd); if na>nd then Writeln('В тексте больше букв') else if na<nd then Writeln('В тексте больше цифр') else Writeln('В тексте букв и цифр поровну') end.
Тестовое решение: Введите текст: the equation 3.546x^2+4.18x-4.1=0 В тексте больше букв
// PascalABC.NET 3.0, сборка 1111 const alpha=['a'..'z']; digits=['0'..'9']; var na,nd,i:integer; s:string; begin na:=0; nd:=0; Write('Введите текст: '); Readln(s); for i:=1 to Length(s) do if s[i] in alpha then Inc(na) else if s[i] in digits then Inc(nd); if na>nd then Writeln('В тексте больше букв') else if na<nd then Writeln('В тексте больше цифр') else Writeln('В тексте букв и цифр поровну') end.
Тестовое решение: Введите текст: the equation 3.546x^2+4.18x-4.1=0 В тексте больше букв
Ну давайте разбираться постепенно.
Изначально сообщение было записано в 16-битном коде, затем ее перекодили в 8-битный, то есть, количество информации уменьшиться в 2 раза. Так как нам сказано, что сообщение уменьшилось на 960 бит, следовательно, 960 * 2 = 1920 бит - объём сообщения в 16-битном коде.
Теперь решаем как обычную задачу.
I = 1920 бит
i = 8
I = k * i
k = I / i
k = 1920 / 8 = 240 символов
ответ: 240 символов