• Предмет: Информатика
  • Автор: natashaasekreto
  • Вопрос задан 9 лет назад

Помогите  пожалуйста... хотя бы составить программу.


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

Формат входных данных:
Входной
файл input.txt содержит два натуральных числа N (10 <= N <=
10^100) и M (10 <= M <= 10^100), разделенных одним пробелом.

Формат выходных данных:
Выходной файл output.txt должен содержать найденное наименьшее число.

Ответы

Ответ дал: pashulke
0
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 a<i then write(f, a);
if a>i then write(f, i);
close (f);
end.
Ответ дал: Аноним
0
И чего? Там надо не просто сравнить две строчки, а составлять числа из цифр...
Ответ дал: Аноним
0
Дурочку валяете? Дайте во входном файле вот это и посмотрите, что получится: 32106696353200405754325400021279038040923804320пробел 435820803056819883221793453123514203340299607763
Ответ дал: Аноним
0
Сейчас еще поиграетесь, 2 часа пройдет с момента помещения ответа и вообще не исправите.
Ответ дал: Аноним
0
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.

Приложения:
Вас заинтересует