Помогите  пожалуйста... хотя бы составить программу.Дано два натуральных числа N и M.Написать программу для определения наименьшего из чисел, составленных из цифр данных чисел. Незначащих нулей в найденном числе быть не должн...

Помогите  пожалуйста... хотя бы составить программу. Дано два натуральных числа N и M. Написать программу для определения наименьшего из чисел, составленных из цифр данных чисел. Незначащих нулей в найденном числе быть не должно. Формат входных данных: Входной файл input.txt содержит два натуральных числа N (10 <= N <= 10^100) и M (10 <= M <= 10^100), разделенных одним пробелом. Формат выходных данных: Выходной файл output.txt должен содержать найденное наименьшее число.
Гость
Ответ(ы) на вопрос:
Гость
var x, y, j, i,b,a:longint; g, f: text; begin assign (g, 'input.txt'); assign (f, 'output.txt'); reset (g); read (g, x, y); close (g); rewrite(f); while x>=0 do begin b:=(x mod 100) div 10; if b=0 then break; a:=x mod 10; if a>b then a:=b; x:=x div 10; end; while y>=0 do begin j:=(y mod 100) div 10; if j=0 then break; i:=y mod 10; if i>j then i:=j; y:=y div 10; end; if ai then write(f, i); close (f); end.
Гость
procedure ShellStr(var s: string); { сортирует символы строки методом Шелла } var   i, j, n, step: integer;   c: char; begin   s := Trim(s);   n := Length(s);   step := n div 2;   while step > 0 do   begin     for j := n - step downto 1 do     begin       i := j;       while i <= n - step do       begin         if s[i] > s[i + step] then         begin           c := s[i];           s[i] := s[i + 1];           s[i + 1] := c         end;         i := i + step       end     end;     step := step div 2   end end; procedure TrimNullsLeft(var s: string); { Усекает левые (незначащие нули) в строке s } var   i, n: integer; begin   i := 1; n := Length(s);   while (s[i] = '0') do i := i + 1;   s := Copy(s, i, n - i + 1) end; var   p, ns: integer;   s, M, N: string;   ml, nl: integer;   f: text; begin   Assign(f,'input.txt');   Reset(f);   Readln(f,s);   Close(f);   Assign(f,'output.txt');   Rewrite(f);   ns := Length(s);   p := Pos(' ', s);   ml := p - 1;   M := Copy(s, 1, ml);   ShellStr(M);   TrimNullsLeft(M);   ml := Length(M);   N := Copy(s, p + 1, ns - p);   ShellStr(N);   TrimNullsLeft(N);   nl := Length(N);   if ml < nl then Writeln(f,M)   else if nl < ml then Writeln(f,N)   else if M < N then Writeln(f,M) else Writeln(f,N);   Close(f);   Writeln('Программа завершила работу') end.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы