Bài 1: GẠCH SỐ
Chúng ta viết liên tiếp n số nguyên tố đầu tiên theo thứ tự tăng để tạo thành một số
có nhiều chữ số. Trong số này hãy gạch đi k chu để số còn lại là:
a. Nhỏ nhất
b. Lớn nhất
Dữ liệu vào: Trong fille GACH.INP với nội dung:
-Dòng đầu tiên là số n (1 <= n <= 50).và số k (1<=k<=n).
Dữ liệu ra: Trong file GACH.OUT với nội dung:
-Dòng đầu tiên là n số nguyên tố viết liền nhau .
-Dòng tiếp theo là số nhỏ nh ất sau khi đã gạch .
-Dòng cuối là số lớn nhất sau khi đã gạch .
Ví dụ:
gach.INP | gach.OUT |
6 3 | 23571113 21113 71113 |
var
i,j,n,k,x,vt:longint;
s,r,s1,s2:ansistring;
A:array[0..101] of boolean;
B:array[0..101] of longint;
BEGIN
assign(input,'gach.inp'); reset(input);
assign(output,'gach.out'); rewrite(output);
read(n,k);
for i:=1 to 101 do
A[i]:=true;
A[1]:=false;
for i:=1 to trunc(sqrt(101)) do
if (A[i] = true) then
for j:=2 to 101 div i do
A[i*j]:=false;
vt:=0;
for i:=1 to 101 do
if (A[i] =true) then
begin
inc(vt);
B[vt]:=i;
end;
for i:=1 to n do
begin
str(B[i],r);
s:=s+r;
end;
x:=length(s)-k-1;
vt:=1;
while (x >= 0) do
begin
for j:=vt to length(s)-x do
if (s[vt] > s[j]) then vt:=j;
s1:=s1+s[vt];
dec(x);
inc(vt);
end;
x:=length(s)-k-1;
vt:=1;
while (x >= 0) do
begin
for j:=vt to length(s)-x do
if (s[vt] < s[j]) then vt:=j;
s2:=s2+s[vt];
dec(x);
inc(vt);
end;
writeln(s);
writeln(s1);
writeln(s2);
close(input);
close(output);
END.