// PascalABC.NET 3.3, сборка 1541 от 29.09.2017 // Внимание! Если программа не работает, обновите версию!
begin Writeln('*** Исходная матрица ***'); var a:=MatrRandom(6,7,-99,99); a.Println(4); Writeln(4*a.ColCount*'-'); for var i:=0 to a.RowCount-1 do for var j:=0 to a.ColCount-1 do if (a[i,j]>0) and (i+j).IsEven then a[i,j]:=0; Writeln('*** Результирующая матрица ***'); a.Println(4) end.
Ну, собственно наш алфавит по условию состоит из 36 символов. Следовательно необходимо расчитать сколько будет занимать универсальный размер переменной, в которую можно будет зашифровать любой из символов.
Бит может принять два состояния, либо 0, либо 1. Следовательно, 1 битом можно закодировать 2 символа. Двумя же битам мы можем зашифровать уже 2 * 2 = 4 символа (умножили два возможных состояния одного бита на другой), нам же нужно 36. Вспоминаем ряд двойки и идем по нему: 2^3 = 8 (слишком мало) 2^4 = 16 (всё ещё не достаточно) 2^5 = 32 (близко, но не сможем зашифровать ещё 4 символа) 2^6 = 64 (то что нужно, 64 > 36, это и есть минимальное кол-во бит)
Итак, что бы зашифровать символ из алфавита размером в 36 символов, нам понадобится минимальная переменная, что сможет его зашифровать, размером в 64 бита.
Сообщение размером в 140 символов, тут уже просто, нужно всего лишь... Ладно, это не банеры, ссылок по которым клацать нет) 140 * 64 = 8960 бит. Не пугайся числа, оно хоть и большое, но точно не по компьютерным меркам :) Давай удивим преподавателя и переведем это в другие еденицы измерения: 8960 / 8(столько занимает "байт") = 1120 байт 1120 / 1024 (небольшая путаница, все последующие единицы измерения занимают в отличии от байта по 1024 раза больше) = 1.9375 килобайта.
Собственно говоря ответ задачи: 8960 бит, либо 1120 байт, либо 1.94 килобайта.
// Внимание! Если программа не работает, обновите версию!
begin
Writeln('*** Исходная матрица ***');
var a:=MatrRandom(6,7,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
for var i:=0 to a.RowCount-1 do
for var j:=0 to a.ColCount-1 do
if (a[i,j]>0) and (i+j).IsEven then a[i,j]:=0;
Writeln('*** Результирующая матрица ***'); a.Println(4)
end.
Пример
-74 73 61 97 96 52 -23
77 -99 -79 48 67 -3 -23
63 -61 -26 28 -99 89 -13
-85 43 -14 85 -8 91 -70
-68 90 71 -23 94 67 -81
-69 -52 44 47 96 -48 89
*** Результирующая матрица ***
-74 73 0 97 0 52 -23
77 -99 -79 0 67 -3 -23
0 -61 -26 28 -99 89 -13
-85 0 -14 0 -8 0 -70
-68 90 0 -23 0 67 -81
-69 -52 44 0 96 -48 89
Бит может принять два состояния, либо 0, либо 1. Следовательно, 1 битом можно закодировать 2 символа. Двумя же битам мы можем зашифровать уже 2 * 2 = 4 символа (умножили два возможных состояния одного бита на другой), нам же нужно 36. Вспоминаем ряд двойки и идем по нему:
2^3 = 8 (слишком мало)
2^4 = 16 (всё ещё не достаточно)
2^5 = 32 (близко, но не сможем зашифровать ещё 4 символа)
2^6 = 64 (то что нужно, 64 > 36, это и есть минимальное кол-во бит)
Итак, что бы зашифровать символ из алфавита размером в 36 символов, нам понадобится минимальная переменная, что сможет его зашифровать, размером в 64 бита.
Сообщение размером в 140 символов, тут уже просто, нужно всего лишь...
Ладно, это не банеры, ссылок по которым клацать нет) 140 * 64 = 8960 бит.
Не пугайся числа, оно хоть и большое, но точно не по компьютерным меркам :)
Давай удивим преподавателя и переведем это в другие еденицы измерения:
8960 / 8(столько занимает "байт") = 1120 байт
1120 / 1024 (небольшая путаница, все последующие единицы измерения занимают в отличии от байта по 1024 раза больше) = 1.9375 килобайта.
Собственно говоря ответ задачи: 8960 бит, либо 1120 байт, либо 1.94 килобайта.