Для регистрации на сайте некоторой страны пользователю необходимо придумать пароль длиной ровно 30 символов. В пароле можно использовать только прописные буквы некоторого алфавита, т.е. 65 символов. Информация о пользователе хранится с минимально возможного целого количества байт. Каждый символ в пароле кодируется одинаковым и минимально возможным количеством бит. Для хранения дополнительной информации на одного пользователя отводится 12 байт. Определите объем памяти в байтах, необходимый для хранения информации о 30 пользователях.
n = 15;
var
a, b: array[1..n] of integer;
i, j, step, t: integer;
flag: boolean;
begin
Randomize;
Writeln('Исходные элементы массива');
for i := 1 to n do
begin
a[i] := Random(10) - 5;
Write(a[i]:4)
end;
{ Сортируем массив (метод Шелла) }
step := n div 2;
while step > 0 do
begin
for j := n - step downto 1 do
begin
i := j;
while i <= n - step do
begin
if a[i] > a[i + step] then
begin
t := a[i]; a[i] := a[i + step]; a[i + step] := t
end;
i := i + step
end
end;
step := step div 2
end;
{
проходим по массиву и если элемент встречается более одного раза подряд,
переносим его в другой массив
}
j := 0; t := a[1]; flag := false;
for i := 2 to n do
begin
if (a[i] = t) and (not flag) then
begin
j := j + 1; b[j] := t; flag := true
end
else begin flag := false; t := a[i] end
end;
Writeln;
Writeln('Отобранные элементы массива');
for i := 1 to j do Write(b[i]:4);
Writeln
end.
Тестовое решение:
Исходные элементы массива
-2 4 1 -3 -1 -2 -5 -1 2 4 1 3 -5 -2 -3
Отобранные элементы массива
-5 -3 -2 -1 1 4
три числа (261, 263, 265) меньше чем b6
Объяснение:
Что бы сравнить числа их необходимо привести в одну систему счисления, тут проще будет B6 привести в 8ричную, т.к. одно число проще привести чем четыре :D
может есть перевода сразу из 16->8, но я не знаю его, поэтому промежуточно буду переводить в 10тичную (если хорошо знаете двоичную то можно через неё, т.к. 4 бита это 16тиричная, а 3 бита - 8миричная, через двоичную легко без вычислений даже)
и так переводим B6 в 10-тичную
(b=11)
11*16+6=182
теперь 182 переводим в 8-миричную
182/8=22 и остаток 6 (последняя цифра)
22/8=2 и остаток 6(предпоследняя цифра)
2/8=0 и остаток 2(первая цифра)
итого b6 в 8миричной будет 266
три числа (261, 263, 265) меньше чем 266