1. Trang chủ
  2. » Thể loại khác

Tuyển tập đề thi học sinh giỏi tin học của thầy hùng biên soạn có hướng dẫn

47 1,6K 14

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 47
Dung lượng 468,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Dữ liệu cho trong file văn bản với tên là CHUSO.INP trong đó dòng đầu chứa số a0,dòng thứ hai chứa hai số N và M.. Kết quả ghi ra trong file QUANGCAO.OUT trong đó:  Dòng đầu là số bóng

Trang 1

Năm học 2002-2003

Bài 1: CHỮ SỐ tên file chương trình CHUSO.PAS

Xét dãy số tự nhiên {an} đuợc xây dựng theo quy tắc sau:

 Cho trước số a0 là một số tự nhiên có tối đa 10 chữ số

 Số ai (i>0) là một số tự nhiên nhận được từ ai-1 bằng cách viết thêm vào saucác chữ số của ai-1 chính ai-1 nhưng viết theo thứ tự ngược lại

Ví dụ:

Với a0 = 123 thì a1 = 123321, a2 = 123321123321, a3 = 123321123321123321123321Với hai số N và M cho trước, hãy tìm chữ số thứ M trong aN

Dữ liệu cho trong file văn bản với tên là CHUSO.INP trong đó dòng đầu chứa số a0,dòng thứ hai chứa hai số N và M

Kết quả ghi ra file văn bản với tên là CHUSO.OUT Trong trường hợp có lời giải, filenày sẽ chứa số tìm được, ngược lại file này chứa số -1

Trước tiên ta nhận xét mặc dù đề bài cho a0 là số tự nhiên, nhưng vì bài toán không

sử dụng tính chất của số nên ta có thể xem a0 như một xâu ký tự

Gọi L là số ký tự của a0, ta thấy a0 có L ký tự, a1 có 2L ký tự, a2 có 4L ký tự, , a N có

2 N L ký tự

Ký hiệu sR là chuỗi ký tự đảo ngược của chuỗi s Ví dụ: nếu s="abca" thì sR ="acba",các chữ cái được viết theo thứ tự ngược lại Để ý là với hai chuỗi a, b bất kỳ ta có(ab)R=bRaR Theo đề bài, ta có a1 = a0a0R, a2=a1a1R=a0a0R(a0a0R)R=a0a0Ra0a0R, , a N =

a 0 a 0 R a 0 a 0 R a 0 a 0 R, nghĩa là xâu aN sẽ ghép thành từ các xâu a0 và a0Rxen kẽ nhau

Từ nhận xét này ta có thuật toán sau:

Nếu vị trí M nằm ngoài xâu ký tự aN, hay nói cách khác nếu M < 1 hoặc M > 2NL thì in

ra -1 Đoạn lệnh sau đây thể hiện điều này:

i:=(m-1) mod l+1; {i là vị trí tương ứng với vị trí M trong chuỗi a0}

if ((m-1) div l) mod 2=1 then i:=l-i+1; {nếu vị trí M thuộc xâu đảo ngược a 0 thì

ta đảo ngược vị trí i}

timchuso:=ord(a0[i])-ord('0'); {kết quả bằng chữ số a0[i]}

CHUSO.OUT1

Trang 2

Bài 2: TÍNH DIỆN TÍCH tên file chương trình HCN.PAS

Trên mặt phẳng tọa độ cho N (N  10 000) hình chữ nhật với các cạnh song songvới các trục tọa độ Các hình chữ nhật được đánh số từ 1 tới N Hình chữ nhật thứ iđược cho bởi toạ độ đỉnh trái dưới (xi1 , yi1) và tọa độ đỉnh phải trên (xi2, yi2) Các số xi1 , yi1, xi2, yi2 là các số nguyên trong phạm vi từ -100 đến 100

Hãy lập trình tính:

1 Diện tích của phần mặt phẳng mà N hình chữ nhật này phủ

2 Tính diện tích phần chung của N hình chữ nhật này

Dữ liệu cho trong file HCN.INP trong đó dòng đầu chứa số N Dòng thứ i trong Ndòng tiếp theo chứa 4 số số xi1 , yi1, xi2, yi2.

Kết quả ghi ra file HCN.OUT gồm 2 dòng, trong đó dòng đầu chứa số S1 là kết quảcủa câu 1 Dòng thứ hai chứa số S2 là kết quả của câu 2

Trang 3

1

Trang 4

Bài 3: BẢNG QUẢNG CÁO Tên file chương trình QUANGCAO.PAS

Trên quảng trường trung tâm của thủ đô Rome có một bảng quảng cáo hìnhchữ nhật gồm N x M ô vuông Mỗi ô có một bóng đèn, mỗi bóng đèn có hai trạng tháitắt hoặc sáng Ứng với mỗi dòng cũng như mỗi cột có một công tắc Khi tác độngđến một công tắc nào đó tất cả các bóng đèn trên dòng hoặc cột tương ứng sẽ đổisang trạng thái ngược lại (đang sáng thành tắc, đang tắc được bật sáng) Để mừngđội nhà thắng trận trong trận cầu chiều qua người phụ trách bảng quảng cáo muốnbảng có được nhiều bóng đèn sáng nhất.Với trạng thái bảng quảng cáo hiện thờicho trước, người phụ trách nhờ bạn lập trình tìm một phương án tác động lên cáccông tắc để nhận được trạng thái bảng quảng cáo mong muốn Bạn hãy giúp nhàphụ trách thực hiện điều đó

Dữ liệu cho trong file văn bản với tên là QUANGCAO.INP trong đó:

 Dòng đầu chứa hai số N và M (: 1 N  10, 1 M  100)

 Dòng thứ i trong N dòng tiếp theo chứa M số 0 hoặc 1 Số thứ j cho biết trạngthái của bóng đèn thứ j trên dòng thứ i của bảng (1 tương ứng với bóng đènsáng, 0 tương ứng với bóng đèn tắt)

Kết quả ghi ra trong file QUANGCAO.OUT trong đó:

 Dòng đầu là số bóng đèn sáng trên bảng tìm được

 Dòng thứ hai chứa S là số lần bạn tác động lên các công tắc

 S dòng tiếp theo lần lượt ghi ra S công tắc theo trình tự cần bật Dòng thứ jtrong S dòng này chứa một xâu độ dài không quá 4, ký tự đầu là ‘D’ hoặc ‘C’tương ứng với tác động thứ i là lên dòng hay cột Phần còn lại của xâu là chỉ

số của dòng hay cột tương ứng

Lời giải:

Trước hết ta đưa ra hai nhận xét:

Mỗi công tắc chỉ cần được tác động nhiều nhất một lần: thật vậy, tác

động một công tắc 2 lần sẽ cho kết quả giống như khi không tác động lêncông tắc

Thứ tự tác động lên các công tắc là không quan trọng Nói cách khác, tác

động một dãy công tắc theo trình tự nào cũng mang lại kết quả như nhau

Từ hai nhận xét trên, ta thấy mỗi công tắc sẽ có hai khả năng: tác động hoặc khôngtác động Có tất cả M+N công tắc, vậy số khả năng là 2M+N Theo giới hạn đề bài ra,con số này có thể rất lớn Tuy nhiên để tìm số bóng đèn sáng nhiều nhất, ta chỉ cầnduyệt qua 2N ≤ 210 = 1024 khả năng tác động lên các công tắc trên các hàng củabảng Với mỗi khả năng này, đối với mỗi cột ta khẳng định được ngay có cần phảitác động lên công tắc của cột đó hay không: nếu tác động lên công tắc cột mà số

Trang 5

đèn sáng trên cột đó nhiều hơn thì ta sẽ tác động Đoạn lệnh sau đây thể hiện điềunày Chú ý trong chương trình dưới đây, ta đánh số cột, hàng bắt đầu từ 0.

for j:=0 to m-1 do begin

dem:=0; {đếm số đèn sáng trên cột j}

for i:=0 to n-1 do

if (b[i,j]=1) then inc(dem);

if (dem<n-dem) then {tác động lên công tắc sẽ cho n-dem bóng đèn sáng}

begin {nếu tác động lên công tắc có lợi hơn:}

Trong 2N khả năng này, ta sẽ chọn ra khả năng cho số bóng đèn sáng nhiều nhất

Về cài đặt chương trình, chú ý sử dụng kỹ thuật xử lý bit khi duyệt qua 2N khả năngtác động lên các công tắc trên hàng Dùng kỹ thuật này, chương trình sẽ được viếtnhanh và gọn hơn Câu lệnh sau đây thực hiện điều này:

for s:=0 to (1 shl n)-1 do {biến s là một dãy N bit thể hiện một khả năng}

Do ta muốn có một dãy N bit đến biến s sẽ chạy từ 0 đến 2N - 1

Để kiểm tra trong khả năng s, một công tắc nào đó có được tác động hay không tadùng thủ tục kiểm tra một bit có được bật hay không:

function bitbat(s, i: longint): boolean;

hang, luuhang: array[0 MAXN-1] of boolean;

cot, luucot: array[0 MAXM-1] of boolean;

Trang 6

function bitbat(s, i: longint): boolean;

function sodensang(var a: bang): longint;

var i,j,dem: longint;

if (bitbat(s,i)) then begin

bathang(b,i); inc(t); hang[i]:=true;

end;

for j:=0 to m-1 do begin

dem:=0;

for i:=0 to n-1 do

if (b[i,j]=1) then inc(dem);

if (dem<n-dem) then begin batcot(b,j); inc(t); cot[j]:=true; end; end;

Trang 7

Bài 1: TỔNG LỚN NHẤT tên chương trình: SUM.PAS

Cho một bảng A gồm N x N số nguyên (N  100), các dòng được đánh số trênxuống dưới bắt đầu từ 1, các cột được đánh số từ trái qua phải cũng bắt đầu từ 1.Mỗi số trong bảng có giá trị tuyệt đối không vượt quá 10000 Đường chéo chính củabảng là đường thẳng nối hai ô (1,1) và (N,N) Như vậy trên bảng có 2N-1 đuờngchéo song song với đường chéo chính

Bài toán: Hãy tìm đường chéo song song với đường chéo chính có tổng các phần tửtrên đường chéo đó là lớn nhất

Dữ liệu vào cho trong file văn bản SUM.INP trong đó:

Trang 8

1 Ký hiệu giá trị này là T Với mỗi giá trị T, ta duyệt qua các cột trên đường chéotương ứng Nếu T≥0 (tương ứng với các đường chéo ở nửa dưới của bảng) thì cộtbắt đầu là 1 còn nếu T<0 thì cột bắt đầu là 1-T

Đoạn lệnh sau thể hiện cách làm này:

Trang 9

Bài 2: SẮP XẾP Tên chương trình: SORT.PAS

Cho một dãy X gồm N số nguyên trong phạm vi từ -10000 đến 10000 (1 N 100000) Hãy sắp xếp dãy số này theo thứ tự giảm dần

Dữ liệu vào cho trong file văn bản SORT.INP trong đó dòng đầu chứa số N Dòngthứ i trong N dòng tiếp theo chứa số thứ i trong dãy X

Kết quả ghi ra file văn bản với tên SORT.OUT trong đó lần lượt ghi ra các phần tửcủa dãy X đã được sắp xếp mỗi số trên một dòng

Lời giải:

Phương pháp sắp xếp mà chúng ta dùng là sắp xếp đếm (counting sort) Phương

pháp này tận dụng việc giới hạn của các số cần sắp xếp có thể lưu đủ trong bộ nhớ,trong bài toán này phạm vi các số là -10000 10000 Ta sẽ dùng mảng dem[-10000 10000] trong đó dem[x] lưu số lần xuất hiện của số x trong dãy số

Bài toán này được ra với yêu cầu làm trên trình biên dịch Borland Pascal Với trìnhbiên dịch cũ này, quản lý bộ nhớ là một điều quan trọng do dung lượng bộ nhớ bịhạn chế Chúng tôi sẽ trình bày lời giải bài toán này trên cơ sở bộ nhớ hạn chế đó

Trang 10

Do mỗi số có thể xuất hiện đến N ≤ 100 000 lần nên mảng dem phải mang kiểu dữliệu longint (số nguyên 32 bit) trong Pascal Trong Borland Pascal, khi khai báo mảng

20000 phần tử longint sẽ bị báo lỗi là không đủ bộ nhớ Có một cách để giải quyếtđiều này:

Khai bảo mảng dem với kiểu dữ liệu word (có giới hạn từ 0 65535) như sau:

var dem: array[-10000 10000] of word;

Ta nhận xét chỉ có nhiều nhất một phần tử của mang dem có thể có giá trị lớn hơnhoặc bằng 60000, vì tổng số lượng số nhiều nhất là 100 000 Do đó ta quản lý thêmmột biến lưu phần tử đặc biệt có giá trị đếm vượt 60000 này (nếu có) Ta đặt tênbiến này là v Đoạn lệnh dưới đây đọc vào các số và quản lý dữ liệu:

for i:=1 to n do

begin

readln(x); {đọc vào một số x}

inc(dem[x]); {tăng biến đếm số lần xuất hiện của số x}

if (dem[x]=60000) then {nếu đã có 60000 số x xuất hiện}

begin

v:=x; {lưu lại số x duy nhất này}

dem[x]:=0; {gán lại biến đếm bằng 0 để tránh tràn số}

end;

end;

Đoạn lệnh dưới đây in ra các số đã sắp xếp theo thứ tự giảm dần:

for i:=-10000 downto 10000 do {duyệt qua phạm vi của các số: [-10000,10000]) begin

for j:=1 to dem[i] do {in ra số i với số lần là dem[i]}

writeln(i);

if (v=i) then for j:=1 to 60000 do {nếu i là số đặc biệt thì ta cần in thêm

60000 lần xuất hiện nữa}

Trang 11

Bài 3: HÌNH VUÔNG tên chưong trình: SQUARE.PAS

Trên mặt phẳng cho N hình vuông với các cạnh song song với hệ trục toạ độ đượcđánh số từ 1 đến N (1N2000) Hình vuông thứ i được cho bởi toạ độ góc dướitrái (xi, yi) và toạ độ đỉnh phải trên là (zi, ti) Toạ độ của các đỉnh là các số nguyêntrong phạm vi -10000 đến 10000 Khoảng cách giữa hai hình vuông A và B đượcđịnh nghĩa là độ dài đoạn thẳng ngắn nhất trong số các đoạn thẳng mà một đầu mútthuộc hình vuông A và đầu mút kia thuộc hình vuông B

Yêu cầu: Tìm hai hình vuông xa nhau nhất trong số N hình vuông cho trước.

Dữ liệu: Vào từ file văn bản SQUARE.INP:

 Dòng đầu tiên chứa số N

 Dòng thứ i trong N dòng tiếp theo chứa 4 số xi, yi, zi và ti

Kết quả: Ghi ra file văn bản SQUARE.OUT trong đó chứa chỉ số của hai hình vuông

thực hiện thành nhiều công việc con Nhưng trước tiên cần nhận xét rằng, luôn tồn

tại một đoạn thẳng ngắn nhất nối giữa hai hình vuông mà có ít nhất một đầu mút là một trong các đỉnh của hai hình vuông Thật vậy, với một đoạn thẳng mà

Trang 12

hai đầu mút đều không phải là đỉnh của hình vuông, ta có thể dời hai đầu mút saocho đoạn thẳng mới không dài hơn đoạn thẳng cũ và ít nhất một đầu mút sẽ trởthành đỉnh của hình vuông.

Vậy thủ tục tính khoảng cách giữa hai hình vuông sẽ được xây dựng từ trên xuốngnhư sau:

 Khoảng cách giữa hai hình vuông bằng khoảng cách ngắn nhất trong số cáckhoảng cách từ một trong 8 đỉnh của hai hình vuông đến hình vuông kia

 Khoảng cách từ một điểm đến một hình vuông bằng khoảng cách ngắn nhấttrong số các khoảng cách từ điểm đó đến bốn cạnh của hình vuông

Khi đã có thủ tục tính khoảng cách giữa hai hình vuông, ta chỉ cần duyệt qua tất cảcác cặp hình vuông và chọn ra cặp có khoảng cách xa nhất Do giới hạn của bàitoán là số hình vuông N ≤ 2000 nên cách làm này là khả thi, thời gian chạy là O(N2).Sau này các bạn sẽ được tiếp cận các lời giải hiệu quả hơn

x1, y1, x2, y2: array[1 MAXN] of longint;

n, luui, luuj: longint;

function min(a,b: longint): longint;

if (a<=x) and (x<=b) then kc:=0

else if (x<a) then kc:=a-x

Trang 13

if (i<j) then kq:=min(kq,kc2hinh(j,i));

Trang 14

Năm học 2004-2005

BÀI 1: KHOẢNG CÁCH GIỮA HAI SỐ Tên chương trình: DISTANCE.PAS

Với hai chữ số x và t, khoảng cách của chúng được định nghĩa là số nguyên không

âm nhỏ nhất d(x,y) mà khi cộng thêm d(x,y) vào một chữ số nào đó trong hai chữ sốx,y thì kết quả nhận được là một số nguyên có chữ số hàng đơn vị trùng với chữ sốcòn lại Ví dụ: d(2,5)=3 vì 2+3=5, d(5,1)=4 vì 1+4=5, còn d(1,9)=2 vì 9+2 = 11

Với hai số nguyên dương X và Y có cùng số lượng chữ số, khoảng cách d(X,Y) giữahai số X và Y là tổng khoảng cách giữa các cặp chữ số cùng hàng tương ứng

Ví dụ d(213,419)=d(2,4) + d(1,1) + d(3,9) = 2 + 0 + 4 = 6

Bài toán: Cho hai số X và Y có cùng lượng chữ số N (0 < N < 100), hãy tìm khoảng

cách d(X,Y)

Dữ liệu vào từ file văn bản DISTANCE.INP trong đó dòng đầu chứa số X; dòng thứ

hai chứa số Y thỏa mãn dàng buộc của bài toán

Kết quả ghi ra file văn bản DISTANCE.OUT trong đóchứa một số nguyên duy nhất

là kết quả d(X,Y) tìm được

for i:=0 to 9 do {duyệt qua các chữ số từ 0 đến 9}

if ((a+i) mod 10=b) or {nếu cộng thêm i vào a mà thu được b}

((b+i) mod 10=a) then {hoặc ngược lại )

Trang 15

Cho một bảng A gồm N x N số nguyên (N  100), các dòng được đánh số từ trênxuống dưới bắt đầu từ 1, các cột được đánh số từ trái qua phải cũng bắt đầu từ 1.Mỗi số trong bảng có giá trị tuyệt đối không vượt quá 30000 Bảng B được tạo ra từbảng A theo qui tắc sau:

Phần tử của B nằm ở dòng I, cột j có giá trị bằng tổng của các số nằm trong ô (i,j) và các ô kề nó trong bảng A: Bij = Aij+A(i+1)j+A(i-1)j+Ai(j+1)+Ai(j-1)

Chú ý: Các phần tử nằm ngoài bảng được xem như có giá trị bằng 0.

Bài toán: Cho bảng A Hãy tạo ra bảng B tương ứng.

Dữ liệu vào cho trong file văn bản TABLE.INP trong đó :

 Dòng đầu chứa số N

 Dòng thứ i trong N dòng tiếp theo chứa N số nguyên lần lượt ứng với cácphần tử nằm trên dòng thứ i của bảng A

 Các số trên cùng một dòng cách nhau bởi khỏang trắng

Kết quả ghi ra file văn bản TABLE.OUT cho biết bảng B tạo được có định dạng cùng

một qui cách với file input, nghĩa là:

Dòng đầu chứ số N

Dòng thứ i trong N dòng tiếp theo chứa N số nguyên lần lượt ứng với cácphần tử nằm trên dòng thứ i của bảng B

Trang 16

Các số trên cùng một dòng cách nhau bởi khỏang trắng.

Ta in ra các phần tử của mảng B theo công thức như đề bài nêu:

for i:=1 to n do begin

Trang 17

trong đó K là một số nguyên dương.

Phương trình này có thể có vô số nghiệm Tuy nhiên, ở đây người ta chỉ quan tâmđến các nghiệm (x,y,z) mà trong đó các số x,y,z đều là các số nguyên tố

Nhắc lại: số tự nhiên p được gọi là số nguyên tố nếu p>1 và p chỉ chia hết cho 1 vàchính nó

Bài toán: Với số K cho trước (K < 5000), hãy tìm tất cả các bộ số nguyên tố x,y,z (x

 y z) là nghiệm của phương trình trên hoặc cho biết không có nghiệm thoả mãnyêu cầu bài toán

Dữ liệu vào cho trong file văn bản EQUA.INP trong đó chứa duy nhất số K

Kết quả ghi ra file văn bản EQUA.OUT chứa N + 1 dòng (N là số nghiệm tìm được),trong đó:

 Dòng thứ i trong N dòng đầu tiên chứa 3 số nguyên cho biết bộ nghiệm thứ itìm được

 Dòng thứ N + 1 chứa 3 số 0 cho biết điểm kết thúc file output

 Các số trên cùng một dòng cách nhau bởi khoảng trắng

Ta kiểm tra các số nguyên tố từ 1 đến 5000 (giá trị lớn nhất của K) rồi lưu vào một mảng:

for i:=2 to MAXK do

if (nguyento(i)) then begin {nếu i là số nguyên tố}

inc(n);

p[n]:=i; {lưu i vào mảng p}

nt[i]:=true; {đặt lại cờ đánh dấu cho biết i là số nguyên tố} end;

Trang 18

Sau đó dùng hai vòng lặp qua mảng này để duyệt qua x và y Mảng đánh dấu nt dùng để kiểmtra nhanh xem z=K-x-y có phải là số nguyên tố không:

for i:=1 to n do {i là chỉ số của số nguyên tố x trong mảng p} for j:=i to n do {j là chỉ số của số nguyên tố y trong mảng p} begin

for i:=2 to MAXK do

if (nguyento(i)) then begin

Trang 19

Yêu cầu: hãy tạo mảng C gồm N+M phần tử từ tất cả các phần tử của A và B sao

cho các phần tử của C cũng có thứ tự tăng dần

Dữ liệu cho trong 2 file văn bản có tên A.INP và B.INP.

Dòng đầu của file A.INP chứa số N Mỗi dòng trong N dòng tiếp theo chứa

1 số nguyên dương ứng với các phần tử của mảng A

Dòng đầu của file B.INP chứa số M Mỗi dòng trong M dòng tiếp theo chứa

1 số nguyên dương ứng với các phần tử của mảng B

Kết quả xuất ra file văn bản C.OUT gồm N+M dòng, lần lượt chứa các phần tử của

Trang 20

đã đọc đến phần tử Ai và Bj Quy tắc tăng giá trị biến chạy là như sau:

 Nếu Ai ≤ Bj: in ra giá trị Ai, tăng biến chạy i, đọc giá trị mới từ mảng A Đoạn

mã sau đây thể hiện điều này:

{biến a, b chỉ phần tử đang xét A i , B j trên hai mảng}

if (a<=b) then {điều kiện A i ≤ B j }

begin

writeln(fc,a); {in ra A i như là phần tử tiếp theo của mảng C}

inc(i); {tăng biến i}

if (i<=n) then {nếu vẫn chưa đọc hết mảng A}

readln(fa,a) {đọc số mới}

else

a:=maxlongint; {nếu đã đọc hết mảng A, gán a giá trị bằng ∞ để sau này

khi so sánh, chỉ các phần tử của mảng B mới được xét} end else begin

{tương tự cho trường hợp A i > B j }

while (i<=n) or (j<=m) do begin

Trang 21

Cho N hình chữ nhật (2 <N< 500) có các cạnh song song với hai trục tọa độ và tọa

độ các đỉnh đều nguyên Các hình chữ nhật được đánh số từ 1 đến N

Yêu cầu: Hãy tìm hai hình chữ nhật mà phần giao nhau của chúng có diện tích lớn

Kết quả xuất ra file văn bản HCN.OUT gồm 1 dòng duy nhất, chứa 2 số nguyên

dương cho biết chỉ số của 2 hình chữ nhật tìm được

Thủ tục sau tìm giao giữa hai đoạn thẳng (a1,b1) và (a2,b2) trên trục số:

function giaodoan(a1,b1,a2,b2:longint):longint;

begin

if (b1<=a2) or (a1>=b2) then

giaodoan:=0 {hai đoạn không giao nhau}

else

giaodoan:=min(b1,b2)-max(a1,a2); {hai đoạn giao nhau}

HCN OUT

1 2

Trang 22

Sau khi có thủ tục tính diện tích phần giao giữa hai hình chữ nhật, ta xét qua tất cảcác cặp hình chữ nhật và chọn ra cặp có phần giao lớn nhất:

x1,y1,x2,y2: array[1 MAXN] of longint;

function min(a,b:longint):longint;begin if a<b then min:=a else min:=b; end;

function max(a,b:longint):longint;begin if a>b then max:=a else max:=b; end;

var n, kq, s, i, j, luui, luuj: longint;

begin

assign(input,finp);

reset(input);

Trang 23

Cho 2 số nguyên dương A,B (0<A, B< 10100 ).

Yêu cầu: hãy so sánh giá trị của 2 số.

Dữ liệu cho trong file văn bản có tện SO.INP gồm 2 dòng:

Dòng đầu chứa số A

Dòng thứ 2 chứa số B

Kết quả xuất ra file văn bản SO.OUT gồm 1 dòng duy nhất, chứa số -1,0 hoặc 1 lần

lượt tương ứng với các trường hợp sau: A < B, A = B, và A > B

Thủ tục so sánh hai số A, B có thể được xây dựng như sau:

 Xem A, B là xâu ký tự Nếu độ dài của hai xâu khác nhau, ta thêm chữ số 0vào đầu xâu ngắn hơn cho đến khi độ dài của hai xâu bằng nhau :

while (length(a)<length(b)) do a:='0'+a;

while (length(b)<length(a)) do b:='0'+b;

Ngày đăng: 11/10/2015, 07:10

HÌNH ẢNH LIÊN QUAN

Bài 3: BẢNG QUẢNG CÁO Tên file chương trình QUANGCAO.PAS - Tuyển tập đề thi học sinh giỏi tin học của thầy hùng biên soạn có hướng dẫn
i 3: BẢNG QUẢNG CÁO Tên file chương trình QUANGCAO.PAS (Trang 4)
Bài 3: HÌNH VUÔNG  tên chưong trình: SQUARE.PAS - Tuyển tập đề thi học sinh giỏi tin học của thầy hùng biên soạn có hướng dẫn
i 3: HÌNH VUÔNG tên chưong trình: SQUARE.PAS (Trang 11)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w