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.