j89026190695
16.07.2021 04:38

Расшифровать Кодировки вида BaseN используются давно.

Они были придуманы для перевода произвольной двоичной последовательности (последовательности байт) в текстовый формат для передачи этого текста по сети (например, для протокола электронной почты).

(N) в названии означает длину алфавита, в который кодируется текст. Алфавит всегда выбирается так, чтобы в нем содержались только печатаемые символы.

Вот, например, алгоритм Base32:

Возьмем алфавит как 234567. Всего 32 символа.

Поделим нашу битовую последовательность на блоки по 40 бит (5 байт). Если длина последовательности не кратна 40, то дополняем последний блок нулями и, в зависимости от количества недостающих целых байт, выполняем в самом конце такой алгоритм:

Если не хватило 1 байта, то в итоговом тексте заменим один последний символ на =

Если не хватило 2 байт, то в итоговом тексте заменим три последних символа на =

Если не хватило 3 байт, то в итоговом тексте заменим четыре последних символа на =

Если не хватило 4 байт, то в итоговом тексте заменим шесть последних символов на =

В каждом блоке выделяем по 5 бит и переводим их в десятичную систему счисления (получится число от 0 до 31). Это число будет позицией символа алфавита, который нужно добавить к итоговой строке. Не забываем, что тру программисты считают с нуля.

После выполнения пункта 3 получаем итоговую строку - это и есть наша входная последовательность, закодированная алгоритмом BASE32.

Любой текст можно преобразовать в битовую последовательность (например, при таблицы ASCII) и применить к нему алгоритм Base32. Например, строка 'A' кодируется в 'IE', а 'ABC' в 'IFBEG==='.

Задание

Мы закодировали флаг при алгоритма BASE32, но наш алфавит состоит из нашего русского алфавита, за исключением буквы Ё - . Получилось 'ОНФЗАШЫФМЩЭЦДРЛУЖМЩУДЯИ='. Ты знаешь что нужно делать - достать флаг.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
masya90
09.01.2023 17:43
Да это самый удобный и наглядный Рисуем дерево вызовов. Понимаем, что если функция вызвалась с числом <=0, то печатается одна звезда, затем на этой ветке рекурсия останавливается. Если же функция вызвалась с параметром > 0, То печатается 2 звезды и возникают новые две ветки рекурсивных вызовов. Прилагаю рисунок, красными точками отмечены звезды, печатающиеся при конкретном вызове функции. ответо будет являться общее количество таких точек. Важно понять, что при наличии идентичных веток можно посчитать результат для такой ветки один раз и использовать его для других таких же.

ответ: 31.
36 с сайта к.ю.полякова дан рекурсивный алгоритм: procedure f(n: integer); begin writeln('*'); if n
0,0(0 оценок)
Ответ:
Vov1111
10.10.2021 10:26
1.
const n=10;
var a:array[1..n] of integer;
i,max,min:integer;
begin
Randomize;
writeln('Массив A:');
for i:=1 to n do
begin
a[i]:=random(51);
write(a[i]:4);
end;
writeln;
max:=a[1]; min:=a[1];
for i:=2 to n do
begin
if a[i]>max then max:=a[i];
if a[i]<min then min:=a[i];
end;
writeln('max = ',max,' min = ',min);
writeln(max,'-',min,' = ',max-min);
end.

Пример:
23 23 46 28 38 21 46 5 19 27
max = 46 min = 5
46-5 = 41

2.
const n=10;
var a:array[1..n] of integer;
i:integer; 
begin
Randomize;
writeln('Массив A:');
for i:=1 to n do
 begin
 a[i]:=random(21);
 write(a[i]:3);
 end;
writeln;
writeln('Числа >5:');
for i:=1 to n do
 if a[i]>5 then write(a[i]:3);
end.

Пример:
Массив A:
 7 0 12 5 1 1 13 15 13 20
Числа >5:
 7 12 13 15 13 20

3.
const n=10; 
var a:array[1..n] of integer;
i:integer; p:real;
begin
Randomize;
writeln('Массив A:');
for i:=1 to n do
 begin
 a[i]:=random(11);
 write(a[i]:3);
 end;
writeln;
p:=1;
for i:=1 to n do
 if a[i]<>0 then p:=p*a[i];
write('p = ',p);
end.

Пример:
Массив A:
 5 7 1 6 0 0 4 1 5 0
p = 4200
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота