Lập trình đơn giản

Nguyễn Chơn Nhân

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


Nguyễn Chơn Nhân
23 tháng 12 2019 lúc 8:50

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.

Bình luận (0)
 Khách vãng lai đã xóa

Các câu hỏi tương tự
Mon_LAK
Xem chi tiết
Thiện
Xem chi tiết
Lục Hạ Vy
Xem chi tiết
Ngô Thị Tân
Xem chi tiết
Thu Hiền
Xem chi tiết
Nguyễn Phương Bằng
Xem chi tiết
Huệ Hà
Xem chi tiết
Hakita Nguyen
Xem chi tiết
Ngọc Hà Nguyễn
Xem chi tiết