Штирлицу удалось похитить пароль от сейфа с секретными материалами — группенфюрер мюллер неосторожно написал его на бумаге и, порвав на несколько частей, выбросил в урну. штирлиц знает, что пароль является палиндромом (числом, которое одинаково читается как слева направо, так и справа налево), еще он догадался, что этот палиндром должен быть максимально возможным. ему восстановить пароль. на обрывках бумаги были написаны следующие числа: 426, 62, 84, 4, 2, 8, 24. выведите ответ в виде одного числа — максимального палиндрома, который можно получить, переставляя обрывки местами (без пробелов между обрывками). например, если на обрывках были числа 1, 21 и 2, то правильный ответ 2112, а не 1221.

natochiyk natochiyk    3   12.07.2019 06:20    0

Ответы
uldairuslanova uldairuslanova  18.09.2020 08:58
Использован алгоритм 115б "Генератор перестановок", опубликованный в книге М.И.Агеев, В.П.Алик, Ю.И.Марков. Библиотека алгоритмов 101б - 150б. Москва, "Советское радио", 1978 и переведенный на Паскаль с языка АЛГОЛ-60.

const
  n=7;
var
  p,d:array[2..n] of integer;
  a:array[1..n] of string:=('426','62','84','4','2','8','24');
  prim115:boolean;

procedure Perm(n:integer);
var
  t:string;
  k,q:integer;
  label index,iter,trans;
begin
  if prim115 then begin
    prim115:=False;
    for k:=2 to n do begin p[k]:=0; d[k]:=1 end
    end;
  k:=0;
index:
  q:=p[n]+d[n]; p[n]:=q;
  if q=n then begin d[n]:=-1; goto iter end;
  if q<>0 then goto trans;
  d[n]:=1; k:=k+1;
iter:
  if n>2 then begin n:=n-1; goto index end;
  q:=1; prim115:=true;
trans:
  q:=q+k; t:=a[q]; a[q]:=a[q+1]; a[q+1]:=t
end;

var
  s,maxs:string;
  i,m:integer;
  pal:boolean;
begin
  prim115:=true; maxs:='';
  repeat
    s:='';
    for i:=1 to n do s:=s+a[i];
    m:=Length(s); pal:=True;
    for i:=1 to m div 2 do
      if s[i]<>s[m-i+1] then begin pal:=false; break end;
    if pal then
      if maxs<s then maxs:=s;
    Perm(n);
  until prim115;
  Writeln(maxs)
end.

Результат выполнения программы:
842624426248
ПОКАЗАТЬ ОТВЕТЫ
vkunney vkunney  18.09.2020 08:58
426.4.2.84.8.24.62. вот но в конец ещё бы 4
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика