Олег Алексеев
Мастер
(1910)
14 лет назад
procedure TForm1.Button1Click(Sender: TObject);
var key,i,j:integer;
s,so:string;
begin
memo1.Clear;
key:=strtoint(edit2.Text);
edit2.Text:=inttostr(strtoint(edit2.Text)+1);
s:=edit1.Text;
so:='';
for i:=1 to key do begin
for j:=0 to length(s)
if ((j*key)+i)<=length(s) then
so:=so+s[(j*key)+i];
end;
Memo1.lines.Add(so);
end;
Собственно прога, но в твоей строке есть пробел, долго не мог понять в чем косяк)
Мария Михайлова
Мастер
(2316)
14 лет назад
СИСТЕМАБЕЗОПАСНОСТИДОЛЖНАОБЕСПЕЧИВАТЬКОНФИДЕНЦИАЛЬНОСТЬХРАНЯЩЕЙСЯВКОМПЬЮТЕРНОЙСИСТЕМЕИНФОРМАЦИИ
Берем строку шифра и пытаемся раскодировать ее с шагом лесенки step: сначала читаем буквы 0, step, 2*step, ..; потом 1, step+1, 2*step+1,...и так, пока строка не закончится. Перебором разных значений step получаем разные строки и смотрим, какая из них самая правдоподобная. Здесь получилось step=16. Код на C++:
#include <iostream>
using namespace std;
int main(){
int step,i,j;
string text = "СААИАЕЬДЛЬЩКТСЕМИБСДОЧКЕЬХЕОЕИИАСЕНОБИОННРЙМРСНЦТЗОЛЕВНЦОАСПНТФИЕОСЖСАФИСНЯЬОЕОИМПТНПТИАТЯВЮЙМР";
for (step=2; step<20; step++)
{ cout << step << endl;
for (i=0; i
СААИАЕЬДЛЬЩКТСЕМИБСДОЧКЕЬХЕОЕИИАСЕНОБИОННРЙМРСНЦТЗОЛ ЕВНЦОАСПНТФИЕОСЖСАФИСНЯЬОЕОИМПТНПТИАТЯВЮЙМР