От разведчика было получено сообщение: 001010011011101110 В этом сообщении зашифрован пароль – последовательность русских букв. В пароле использовались только буквы А, Б, К, Л, О, С; каждая буква кодировалась двоичным словом по таблице, показанной на рисунке. Расшифруйте сообщение. Запишите в ответе пароль. А-10
Б-111
К-101
Л-001
О-00
С-001
100110101011₂ = 2 475₁₀ = 4653₈ = 9AB₁₆
Объяснение:
100110101011₂ = 1 * 2¹¹ + 0 * 2¹⁰ + 0 * 2⁹ + 1 * 2⁸ + 1 * 2⁷ + 0 * 2⁶ + 1 * 2⁵ + 0 * 2⁴ + 1 * 2³ + 0 * 2² + 1 * 2¹ + 1 * 2⁰ = 2 048 + 256 + 128 + 32 + 8 + 2 + 1 = 2 475₁₀
100110101011₂ - делим на тройки начиная с конца и переводим в 10 СС
011₂ = 1 * 2¹ + 1 * 2⁰ = 2 + 1 = 3₁₀
101₂ = 1 * 2² + 0 * 2¹ + 1 * 2⁰ = 4 + 1 = 5₁₀
110₂ = 1 * 2² + 1 * 2¹ + 0 * 2⁰ = 4 + 2 = 6₁₀
100₂ = 1 * 2² + 0 * 2¹ + 0 * 2⁰ = 4₁₀
записываем снизу вверх и получаем 8 СС
100110101011₂ = 4653₈
100110101011₂ - делим на четверки начиная с конца и переводим в 10 СС
1011₂ = 1 * 2³ + 0 * 2² + 1 * 2¹ + 1 * 2⁰ = 8 + 2 + 1 = 11₁₀
1010₂ = 1 * 2³ + 0 * 2² + 1 * 2¹ + 0 * 2⁰ = 8 + 2 = 10₁₀
1001₂ = 1 * 2³ + 0 * 2² + 0 * 2¹ + 1 * 2⁰ = 8 + 1 = 9₁₀
В качестве цифр 16 СС используются цифры от 0 до 9 и латинские буквы от A до F.
А = 10₁₀ B = 11₁₀ C = 12₁₀ D = 13₁₀ E = 14₁₀ F = 15₁₀
записываем снизу вверх и получаем 16 СС (не забывая заменять числа от 10 до 15 на буквы)
100110101011₂ = 9AB₁₆
// Внимание! Если программа не работает, обновите версию!
begin
var n:=ReadInteger('Число элементов в массиве:');
var a:=ArrRandom(n,1,99);
Write('Исходный массив: '); a.Println;
var n1,n2:integer;
Write('Границы номеров элементов для суммы: '); Read(n1,n2);
if n1>n2 then Swap(n1,n2);
if (n1<1) or (n2>n) then Writeln('Границы выходят за пределы массива')
else Writeln('S=',a[n1-1:n2].Sum)
end.
Пример
Число элементов в массиве: 15
Исходный массив: 89 82 45 28 88 68 34 19 35 26 67 43 71 96 66
Границы номеров элементов для суммы: 4 9
S=272