Напишите, , программу, которая составляет из цифр введённой строки число-палиндром максимальной длины (которое читается одинаково слева направо и справа налево). если таких чисел несколько, нужно вывести минимальное из них. все имеющиеся цифры использовать не обязательно, но количество цифр в ответе должно быть максимально возможным. язык программирования паскаль входная строка содержит цифры (по крайней мере, одну) и, возможно, другие символы. программа должна вывести число-палиндром максимальной длины, которое можно составить из цифр входной строки. примеры входные данные for i: =99921 downto 2 выходные данные 29192
Ответы на вопрос:
begin
var s : = readlnstring;
var s1 : = s.where(t -> t in ['0'..'9']).sorted.groupby(t -> t)
.select(c -> (c.key, c.(t -> t[0]).toarray;
var s2 : = s1.where(t -> t[1] > 1).select(t -> t[0] * (t[1] div 2))
.joinintostring('').replace('0', '');
var s3 : = s1.where(t -> t[1] = 1);
if s3.count > 0 then s2 : = s2 + s3.select(t -> t[0]).first + s2.inverse
else s2 : = s2 + s2.inverse;
s2.println
end.
пример for i: =99921 downto 2 29192program rawtcherv;
function incpost(var i: integer): integer;
begin
result: =i;
inc(i);
end;
// из символов из входной строки составить палиндром с минимальным значением
function makeminpalindromemaxlength(const s: string): string;
var
a: array[1..9] of byte;
i,j,fino,cur,center: integer;
begin
fillchar(a{%h-},sizeof(a),0);
// вычисляем количество разных цифр, встреченных во введённой строке
for i: =1 to length(s) do
if s[i] in ['1'..'9'] then
inc(a[ord(s[i])-ord('0')])
else
break;
// максимальная длина палиндрома равна длине строки
cur: =1;
center: =-1;
setlength(result,length(s));
// составляем палиндром. в начало вставляем половину всех цифр от мин. к макс.
for i: =1 to 9 do begin
// поиск минимального числа, которое можно вставить в центр
if (a[i] mod 2=1) and (center< 0) then
center: =i;
// вставляем в начало строки половину символов
fino: =a[i] div 2;
for j: =1 to fino do
result[incpost(cur)]: =chr(i+ord('0'));
// оставшуюся половину вставим потом
a[i]: =fino;
end;
// вставляем центральный символ
if center> 0 then
result[incpost(cur)]: =chr(center+ord('0'));
// вставляем в обратном порядке символы палиндрома
for i: =9 downto 1 do begin
for j: =1 to a[i] do
result[incpost(cur)]: =chr(i+ord('0'));
end;
// восстанавливаем длину строки
setlength(result,cur-1);
end;
procedure test(const s: string);
var
s1: string;
begin
s1: =makeminpalindromemaxlength(s);
writeln('orig=',s);
writeln('pal =',s1);
writeln('diff=',length(s)-length(s1));
writeln;
end;
begin
test('9998888776665432111');
readln;
end.
13
Объяснение:
s = 0 i = 5
Действия в цикле:
1) s = s + 6 div i
2) i = i - 1
Цикл продолжает работу пока ложно (нет) условие i < 1
Вывод s
s = 0 i = 5
Действия в цикле:
1) s = s + 6 div i = 0 + 6 div 5 = 0 + 1 = 1
2) i = i - 1 = 5 - 1 = 4
4 < 1 (нет)
s = 1 i = 4
Действия в цикле:
1) s = s + 6 div i = 1 + 6 div 5 = 1 + 1 = 2
2) i = i - 1 = 4 - 1 = 3
3 < 1 (нет)
s = 2 i = 3
Действия в цикле:
1) s = s + 6 div i = 2 + 6 div 3 = 2 + 2 = 4
2) i = i - 1 = 3 - 1 = 2
2 < 1 (нет)
s = 4 i = 2
Действия в цикле:
1) s = s + 6 div i = 4 + 6 div 2 = 4 + 3 = 7
2) i = i - 1 = 2 - 1 = 1
1 < 1 (нет)
s = 7 i = 1
Действия в цикле:
1) s = s + 6 div i = 7 + 6 div 1 = 7 + 6 = 13
2) i = i - 1 = 1 - 1 = 0
0 < 1 (да)
Цикл заканчивает работу
s = 13 i = 0
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
Bogdan8ra4yk06.10.2021 01:35
-
Шуранька14.01.2022 04:11
-
pirlikserge0502.10.2022 00:50
-
liza143731.07.2021 15:49
-
ctalin12312301.01.2020 22:42
-
kataderabinaКатюшка06.02.2021 21:50
-
bayramovameyra07.03.2023 12:58
-
Veronika7256308.03.2022 03:23
-
MaksN120304.07.2020 16:26
-
Nagornovani200203.03.2023 03:18
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.