Олимпиадная задача информатика Задание 10.
Для простейшего кодирования числовой информации решили использовать побитовую логическую функцию XOR (исключающее ИЛИ) между исходным сообщением и двоичным ключом Ключ нмеет длину, меньшую сообщения, поэтому может применяться циклически несколько раз. начиная отсчет от младшего бита.
СООБЩЕНИЕ XOR (КЛЮЧ)n раз = ШИФРОВКА
Вся информация (и шифровка, и сообщение) используется в шестнадцатеричном виде. Определите двоичный ключ, которым было зашифровано СООБЩЕНИЕ=FB17405А2 (в 16-ой системе счисления) если
получили следующий код ШИФРОВКИ - 484EEC8C4(в 16-ой системе счисления) Функция ХОR даем на выходе истинное значение, если на входе заданы противоположные
аргументы, и ложное значение, если аргументы на входе совпадают. Функция XOR - взаимообратная что используется при шифровании В ответе укажите двоичный код ключа
Сначала программа, показывающая период=))
Var
N:uint64;
B:BigInteger:=1;
Begin
Write('N = ');ReadLn(N);
For var i:= 1 to N do
Begin
if (i mod 10 <> 5)and(i mod 10 <> 0) then B:=B*i
else if i mod 10 = 5 then B:=B div 2;
Write(B mod 10);
if i mod 40 = 0 then WriteLn;
End;
End.
N = 1000
1264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
...
Ну и так далее.
Искомая программа:
Const
T = '6626422428886826626444846886822242844846';
Var
S:BigInteger;
Begin
S:=ReadString.ToBigInteger;
if S > 1 then WriteLn(T[(S mod 40).ToString.ToInteger+1])
else WriteLn(1)
End.