Штирлицу удалось похитить пароль от сейфа с секретными материалами — группенфюрер Мюллер неосторожно написал его на бумаге и, порвав на несколько частей, выбросил в урну. Штирлиц знает, что пароль является палиндромом (числом, ...

Штирлицу удалось похитить пароль от сейфа с секретными материалами — группенфюрер Мюллер неосторожно написал его на бумаге и, порвав на несколько частей, выбросил в урну. Штирлиц знает, что пароль является палиндромом (числом, которое одинаково читается как слева направо, так и справа налево), еще он догадался, что этот палиндром должен быть максимально возможным. Помогите ему восстановить пароль. На обрывках бумаги были написаны следующие числа: 426, 62, 84, 4, 2, 8, 24. Выведите ответ в виде одного числа — максимального палиндрома, который можно получить, переставляя обрывки местами (без пробелов между обрывками). Например, если на обрывках были числа 1, 21 и 2, то правильный ответ 2112, а не 1221.
Гость
Ответ(ы) на вопрос:
Гость
426.4.2.84.8.24.62. вот но в конец ещё бы 4
Гость
Использован алгоритм 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
Не нашли ответ?
Ответить на вопрос
Похожие вопросы