program Ab;
uses crt;
var n: integer; {dlina stroki}
K: integer; {kol-vo faz}
i, j: integer; {ciklovye peremennye}
kolp: integer; {kol-vo prostyh chisel na promezhutke}
S: string; {stroka}
Sr: string; {stroka posle shifrovki}
S1: string;
Sarr: string;
function isp(n: integer): boolean; {prostoe li chislo?}
var d, r: integer;
begin
d:=2;
repeat
r:=n mod d;
if r <> 0 then d:=d+1;
until r=0;
if d=n then isp:=True else isp:=False;
end;
function ITS(n: integer): string;
var s: string;
begin
Str(n, s);
ITS:=s;
end;
function STI(s: string): integer;
var n, o: integer;
begin
Val(s, n, o);
STI:=n;
end;
Begin
clrscr;
ReadLn(n);
ReadLn(K);
ReadLn(S);
kolp:=0;
for i:=1 to n do if Isp(i) then
begin
Sarr:=Sarr+' '+ITS(i); {zapisyvaem cherez probel prostye chisla}
kolp:=kolp+1; {schitaem ih kol-vo}
end;
Delete(Sarr, 1, 1); {udalaem probel}
for j:=i to K do
begin
S1:=Copy(S, kolp+1, n-kolp-1);
end;
{
}
ReadLn;
End.
Задача "Расшифровка"
Требуется написать программу, осуществляющую дешифрацию заданной строки, являющейся результатом шифрования S после K фаз.
Формат входных данных:
Сначала вводится число N (1<N<255) - длина зашифрованного сообщения, потом вводится число K (1<k<100) - кол-во фаз, затем сама строка.
Формат выходных данных:
Вывести только дешифрованную строку.
Примеры входных и выходных данных:
1)Ввод: 8 2 CEaFBGdH
Вывод: aBCdEFGH
2) Ввод: 13 1 рие,с!Пвт Вая
Вывод: Привет, Вася!
Это часть моего решения задачи. Оно не полное. Как дальше решать я не знаю...
Код:
Код:
program Ab;
uses crt;
var n: integer; {dlina stroki}
K: integer; {kol-vo faz}
i, j: integer; {ciklovye peremennye}
kolp: integer; {kol-vo prostyh chisel na promezhutke}
S: string; {stroka}
Sr: string; {stroka posle shifrovki}
S1: string;
Sarr: string;
function isp(n: integer): boolean; {prostoe li chislo?}
var d, r: integer;
begin
d:=2;
repeat
r:=n mod d;
if r <> 0 then d:=d+1;
until r=0;
if d=n then isp:=True else isp:=False;
end;
function decode(s:string):string;
var i:integer; r:string;
begin
r:='';
for i:=1 to length(s) do r:=r+#1;
for i:=1 to length(s) do
if isp(i) then begin r:=s[1]; delete(s,1,1); end;
for i:=1 to length(r) do
if r=#1 then begin r:=s[1]; delete(s,1,1); end;
decode:=r;
end;
Begin
clrscr;
{ReadLn(n);}
{ReadLn(K);} K:=2;
{ReadLn(S);} s:='CEaFBGdH';
kolp:=0;
for i:=1 to K do
s:=decode(s);
writeln(s);
ReadLn;
End.
uses crt;
var n: integer; {dlina stroki}
K: integer; {kol-vo faz}
i, j: integer; {ciklovye peremennye}
kolp: integer; {kol-vo prostyh chisel na promezhutke}
S: string; {stroka}
Sr: string; {stroka posle shifrovki}
S1: string;
Sarr: string;
function isp(n: integer): boolean; {prostoe li chislo?}
var d, r: integer;
begin
d:=2;
repeat
r:=n mod d;
if r <> 0 then d:=d+1;
until r=0;
if d=n then isp:=True else isp:=False;
end;
function decode(s:string):string;
var i:integer; r:string;
begin
r:='';
for i:=1 to length(s) do r:=r+#1;
for i:=1 to length(s) do
if isp(i) then begin r:=s[1]; delete(s,1,1); end;
for i:=1 to length(r) do
if r=#1 then begin r:=s[1]; delete(s,1,1); end;
decode:=r;
end;
Begin
clrscr;
{ReadLn(n);}
{ReadLn(K);} K:=2;
{ReadLn(S);} s:='CEaFBGdH';
kolp:=0;
for i:=1 to K do
s:=decode(s);
writeln(s);
ReadLn;
End.
Hydra, огромное спасибо!