
2. Минимальное число из цифр Ограничение времени 1 секунда Ограничение памяти 256Mb Ввод
стандартный ввод или input.txt Вывод стандартный вывод или output.txt Даны 2 натуральных числа: a и b. Рассмотрим их сумму: s = a + b. Какое минимальное число можно получить путём перестановки цифр десятичной записи числа s, так, чтобы при этом получалась корректная десятичная запись числа? Формат ввода В единственной строке входного файла записаны два натуральных числа через пробел в указанном порядке: a и b (1 ≤ a, b ≤ 109.). Формат вывода В выходной файл программа должна вывести единственное число: ответ в задаче. Пример 1 Ввод Вывод 10 11 12 Пример 2 Ввод Вывод 20 30 50 ПОМОГИТЕ ПОЖАЛУЙЙСТА СРОЧНООООО. НАПИШИТЕ КОД НА ПАСКАЛЬ АБС

Ответы на вопрос

type z=array of byte;
var i,a,b,s: integer;
digits: z;
f: text;
begin
assign(f,'input.txt');
reset(f);
read(f,a);
read(f,b);
close(f);
s:=a+b;
i:=0;
while(s>0) do
begin
setlength(digits,i+1);
digits[i]:=s mod 10;
s:=s div 10;
i:=i+1;
end;
for i:=0 to length(digits)-2 do
for b:=0 to length(digits)-i-2 do
if (digits[b] > digits[b+1]) then
begin
a:= digits[b];
digits[b] := digits[b+1];
digits[b+1] := a;
end;
if(digits[0]=0) then for i:=0 to length(digits)-1 do
if(digits[i]<>0) then
begin
digits[0]:=digits[i];
digits[i]:=0;
break;
end;
assign(f,'output.txt');
rewrite(f);
for i:=0 to length(digits)-1 do write(f,digits[i]);
close(f);
end.



Для решения этой задачи можно использовать следующий алгоритм:
- Найдите сумму чисел
a
иb
. - Переставьте цифры этой суммы так, чтобы получить минимальное возможное число.
- Выведите полученное минимальное число.
Для нахождения минимального числа, следует упорядочить цифры суммы по возрастанию. Один из способов сделать это - преобразовать сумму в строку, отсортировать ее символы по возрастанию и затем преобразовать обратно в число.
Ниже представлен код на языке Pascal (Delphi), который решает данную задачу:
pascalprogram MinDigitsSum; function Min(a, b: Integer): Integer; var s: Integer; digits: array of Char; begin s := a + b; // Преобразуем сумму в строку и сортируем символы по возрастанию digits := s.ToString.ToCharArray; System.Array.Sort(digits); // Обратно преобразуем отсортированные символы в число Result := StrToInt(String(digits)); end; var a, b: Integer; begin // Ввод чисел a и b ReadLn(a, b); // Вычисление и вывод результата WriteLn(Min(a, b)); end.
Скопируйте этот код в среду разработки Pascal (Delphi) и запустите программу. После запуска введите два натуральных числа через пробел и программа выдаст результат - минимальное число, которое можно получить путем перестановки цифр суммы a + b
.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili