Пароли. длина, эффективность паролей цифровых (пин код), буквенных, визуальных (ключ пароль). фото проверка.
актуальность, стойкость когда взлому.
Составим программку:
uses Crt;
const n=20;
type Mas=array [1..n, 1..n] of integer;
var A: Mas;
i,k, Sum: integer;
begin
ClrScr;
Sum:=0;
for i:=1 to n do
begin
for k:=1 to n do
begin
if i>k then
begin
A[i,k]:=1;
Sum:=Sum+A[i,k];
end
else
begin
A[i,k] :=-1;
Sum:=Sum+A[i,k];
end;
Write(A[i,k]:3);
end;
WriteLn;
end;
WriteLn;
WriteLn(' Sum = ',Sum);
ReadLn;
end.
Эта программа симметрично относительно главной диагонали заполняет массив единичками с плюсом или минусом и считает сумму диагональных элементов.
Если n=20, то Sum = -20
Если n = 100, то Sum = - 100
ПРАВИЛЬНЫЙ ОТВЕТ: 3) - 100
Если нужно выбрать из вариантов, достаточно проверить, что код префиксный и найти общую длину сообщения в каждом случае.
1) <span>✔ префиксный
длина А: 1, длина Б: 2, длина В: 3, длина Г: 3
Длина сообщения: 10 * 1 + 5 * 2 + 20 * 3 + 5 * 3 = 10 + 10 + 60 + 15 = 95 бит
2) </span><span>✔ префиксный
длины кодовых слов: 2
Длина сообщения: (10 + 5 + 20 + 5) * 2 = 40 * 2 = 80 бит
3) </span><span>✘ </span><span>не префиксный (11 - префикс 111)
4)</span> ✔ префиксный
длина А: 2, длина Б: 3, длина В: 1, длина Г: 3
Длина сообщения: 10 * 2 + 5 * 3 + 20 * 1 + 5 * 3 = 20 + 15 + 20 + 15 = 70 бит
Наиболее оптимальный код 4).
Если бы нужно было бы найти какое-нибудь оптимальное префиксное кодирование, можно было бы построить код Хаффмана.
Выписываем частоты символов, а затем объединяем наименее часто встречающиеся символы, почлучая кодовое дерево.
А - 10, Б - 5, В - 20, Г - 5
А - 10, (БГ) - 10, В - 20
(А(БГ)) - 20, В - 20
(В(А(БГ)) - 40
Если в этой записи есть (XY), то к коду любой буквы из X приписываем слева 0, для любого символа из Y - 1. Начинаем с пустых кодов:
(БГ) -> Б: 0, Г: 1
(А(БГ)) -> А: 0, Б: 10, Г: 11
(В(А(БГ)) -> В: 0, А: 10, Б: 110, Г: 111.
Доказано, что такой код будет оптимальным.