В понеділок Толя позичив у Сергійка 2 цукерки і з задоволенням їх з'їв. У вівторок він позичив у два рази більше цукерок, після чого віддав половину боргу, а решту цукерок знову із задоволенням з'їв. Кожний наступний день він позичав у два рази більше цукерок, ніж у попередній день, віддавши з них цілу частину від половини боргу, а решту цукерок із задоволенням з'їдав. Скільки цукерок K із задоволенням з'їсть Толя N-гo дня? Який у нього буде борг B на кінець N-го дня ?
Вхідні дані
У вхідному файлі одне число N. 1 ≤ N ≤ 30.
Вихідні дані
У вихідний файл потрібно записати два числа - значення K та B.
program an;
var n:integer;
s1,s2:string;
i,j:integer;
begin
s1[1]:='*';
s2[1]:=' ';
for j:=2 to n do
begin
if s1[j-1]='*' then
s1[j]:=' '
else
s1[j]:='*';
if s2[j-1]='*' then
s2[j]:=' '
else
s2[j]:='*';
end;
j:=1;
for i:=1 to n do
begin
if j=1 then
begin
writeln(s1);
j:=0;
end
else
begin
j:=1;
writeln(s2);
end
end;
end.
Объяснение:
Пишем свой генератор случайных чисел, который будет инициализироваться ключом(числом). Например лин. конгруэнтный метод, с заданными параметрами.
Шифрование:
В цикле генерируешь числа с своего генератора и "складываешь" с открытым
текстом, например побайтово. Получается шифротекст.
Под "складываешь" я имел ввиду сложение по модулю(для побайтового шифрования, модуль будет 256)
Дешифрование
Опять берем наш генератор, с теми же параметрами как и при шифровании(если знаем ключ).
И вычитаем из шифротекста, побайтово числа, которые выдает наш генератор. На выходе получается дешифрованный текст
Объяснение: