Pascal

Modified: Wednesday, 22-12-2021 07:00 AM

Cho một chuỗi số và 1 số k nhỏ hơn hoặc bằng chiều dài của chuỗi số.

Tìm số lớn nhất có k chữ số được tạo bởi các ký số trong chuỗi và không thay đổi vị trí.

Ví dụ:
Chuỗi số là: 489451489 | k là 4
=> KQ: 9589

Tìm số nhỏ nhất có k chữ số được tạo bởi các ký số trong chuỗi và không thay đổi vị trí.

Ví dụ:
Chuỗi số là: 120004 | k là 3
=> KQ: 100


//--- Số lớn nhất có k chữ số
var so,max:string;
    i,j,k,m:byte;
begin
   so := '489451489';
   k  := 4;
   m  := 0;
   for i:=k downto 1 do
   begin
       inc(m);     
       max := so[m];
       for j:=(m+1) to (length(so)-i+1) do
      begin
          if so[j]>max then 
          begin
             max:=so[j];
             m:=j;
          end;
      end;
      write(max);
   end;
   readln;
end. 
//--- Số nhỏ nhất có k chữ số
var so,min:string;
i,j,k,m:byte;
begin
    so := '2015';
    k  := 2;
    //------ So dau tien <> 0 ----------
    i   := k;
    m   := 1;
    min := so[m];
        for j:=(m+1) to (length(so)-i+1) do
        begin
            if so[j]'0')then
            begin
                min := so[j];
                m := j;
            end;
        end;
        write(min);
    //------ Cac so con lai ------------
    for i:=(k-1) downto 1 do
    begin
        inc(m);     
        min := so[m];
        for j:=(m+1) to (length(so)-i+1) do
        begin
            if so[j]'1')then
            begin
                min := so[j];
                m := j;
            end;
        end;
        write(min);
    end;
    readln;
end.