Bài
2 : Mảng và xâu ( Hưng yên - 2011)
Nhập
số nguyên N (2<=n<=20) và mảng 1 chiều A gồm N số nguyên dương nhỏ hơn
1000 sau đó đưa ra kết quả mảng A ra ngoài màn hình. Em hãy cài đặt chương
trình làm những việc sau.
a)
Sắp xếp mảng A theo thứ tự tăng dần.
b)
Nhập vào một số nguyên dương k (k < 1000). Chèn k mảng A sao cho thứ tự sắp
xếp vẫn tăng dần.
c)
Tạo một xâu nhị phân gồm toàn các số 0 và 1 được tạo từ N số của mảng A sau khi
được chuyển sang hệ nhị phân .
VD
N=5,
mảng A: 1,7,2,15,11
Mảng
sau khi được sắp xếp: 1 2 7 11 15
k=8
thì mảng A : 1 2 7 8 11 15
xâu
nhị phân : 110111100010111111
Lời giải var d: array[1..30000] of byte; M : longint; procedure sangNT; var I,j : longint; begin for i:=1 to 30000 do d[i] := 0; d[1]:=1; i:=1; while i*i<=30000 do begin repeat inc(i) until (i*i>30000) or (d[i]=0); if i*i<=30000 then begin j:=2; while i*j<=30000 do begin d[i*j]:=1; inc(j); end; end; end; end; function sieunt(x:longint) : boolean; begin repeat if d[x] =1 then begin sieunt:= false; exit; end; x:=x div 10; until x=0; sieunt:=true; end; var a,b: longint; begin sangNT; read(M); a:=m; while (a>0) and (not sieunt (a)) do dec(a); b:=m; while (b<30001) and (not sieunt (b)) do inc(b); if a>0 then writeln(a); if (b<>m) and (b<30001) then writeln(b); end.
Không có nhận xét nào:
Đăng nhận xét