Работы учащихся Решение сложных задач по программированию | Página 8
© Иванов Дмитрий, МБОУ «Лицей № 2», г. Нижневартовск
Задача № 7
На вход программе подается последовательность символов, заканчивающаяся нулем. Ноль в этой
последовательности единственный, среди символов обязательно есть другие десятичные цифры.
Требуется написать программу, которая составляет из этих цифр число-палиндром максимальной
длины (которое читается одинаково слева направо и справа налево). Если таких чисел несколько,
нужно вывести минимальное из них. Нулей в числе быть не должно (ноль – признак окончания
ввода). Все имеющиеся цифры использовать не обязательно, но количество цифр в ответе должно
быть максимально возможным. Например, если исходная последовательность была такая:
for i:=99921 downto 20
то результат должен быть следующий:
29192
Решение:
{Ivanov D 26}
program chislovoipalindrom;
var a:array[1..9] of integer;
i,er,x:integer;
s:string;
ch,nul:longint;
begin
readln(s);
for i:=1 to 9 do
a[i]:=0;
i:=1;
while s[i]<>'0' do begin
val(s[i],x,er);
if er=0 then a[x]:=a[x]+1;
i:=i+1;
end;
x:=0;
ch:=0;
for i:=1 to 9 do
if (a[i] mod 2 = 1)or(a[i]=1) then x:=i;
for i:=1 to 9 do
for er:=1 to (a[i] div 2) do
write(i);
write(x);
for i:=9 downto 1 do
for er:=1 to a[i] div 2 do
write(i);
end.
май, 2015 г.