1. Trang chủ
  2. » Trung học cơ sở - phổ thông

30 bai on thi HSG tin hoc

37 2,6K 0

Đ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 37
Dung lượng 490,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

Giúp các bạn ôn luyện phần lập trình pascal cho học sinh trung học cơ sở, chuẩn bị cho các kì thi học sinh giỏi môn tin học. Đây là tập hợp các bài tập cơ bản được soạn bởi thầy giáo uy tín với kinh nghiệm nhiều năm đào tạo đội tuyển tin học của Đồng Nai. Tài liệu đi từ dễ tới khó, cấu trúc chặt chẽ, trình bày rõ ràng logic. Hy vọng giúp bạn đọc phát triển kiến thức lập trình.

Trang 1

30 BÀI TẬP ÔN LUYỆN THI HSG TIN LỚP 9Bài 1 Tính tổng TINHTONG

Bài 2 Tính cạnh kề CANHKE (3 điểm)

Nhập độ dài cạnh huyền và một cạnh kề của tam giác vuông Tính độ dài cạnh kề còn lại Làm tròn 2 chữ số thập phân

Trang 2

Bài 3 Tính diện tích DTHT (2 điểm)

Cho cạnh hình vuông, tính diện tích hình tròn trong hình sau Kết quả làm tròn 2 chữ số thập phân Sử dụng số pi = 3.14

Ví dụ:

Test

Nhap canh hinh vuong 5 Dien tich hinh tron la: 39.25

Trang 3

Bài 4 Kiểm tra số chính phương CPHUONG

Số chính phương là bình phương của một số nguyên Nhập số tự nhiên n Cho biết n có phải số chính phương hay không?

Bài 5 Kiểm tra tam giác KTTG

Mẹ Bi cho Bi một số que gỗ và đố Bi chọn được 3

que để xếp thành một hình tam giác Bi chỉ biết độ

dài 3 que gỗ mình sẽ lấy chứ không được xếp thử

trước

Trang 4

Yêu cầu: hãy giúp bé Bi kiểm tra xem 3 que gỗ đã lấy có xếp được thành tam giác hay

không?

Input: độ dài 3 que gỗ

Output: kết luận có xếp được không

Bài 6 Tính tiền internet 1 NET1

Một dịch vụ tính phí Internet như sau: Từ phút thứ 1 đến

phút thứ 60 tính 80 đ/1 phút Từ phút thứ 61 đến phút thứ

120 tính 50 đ/1 phút Từ phút thứ 121 trở đi tính 30 đ/1

phút Viết chương trình nhập vào số phút truy cập của một

người và in ra số tiền phải trả của người đó

Trang 5

Bài 7 Số ngày SONGAY

Nhập vào tháng và năm Cho biết tháng đó có bao nhiêu ngày Biết năm nhuận là năm chia hết cho 400 hoặc không tròn trăm nhưng chia hết cho 4

Trang 6

end

Bài 8 Năm nhuận NHUAN

Năm nhuận là năm có 366 ngày và tháng 2 năm đó có 29 ngày Ta

có cách xác định năm nhuận như sau: năm nhuận là năm chia hết cho

400 hoặc không tròn trăm nhưng chia hết cho 4 Viết chương trình

nhập vào một năm bất kì, cho biết đó có phải năm nhuận không ?

Trang 7

Bảng của đồng hồ điện tử gồm một dãy ba số h, p và s thể hiện tương ứng giờ, phút và giây của thời điểm hiện tại Cứ sau mỗi giây giá trị của bộ ba số h, p và s này sẽ thay đổi thành 3 số h1, p1 và s1 tương ứng với thời điểm mới

Yêu cầu: Cho ba số h, p và s, hãy tìm 3 số h1, p1 và s1.

Dữ liệu: gồm 1 dòng chứa ba số nguyên không âm h, p và s (0 ≤ h ≤ 23, 0 ≤ p, s ≤ 59) Kết quả: 3 số nguyên h1, p1 và s1 tìm được.

Trang 8

Tính tiền đi taxi từ số km đã đi được nhập vào, biết:

Bài 11 Số đảo ngược SODAO

Tìm số đảo ngược Y của một số X, biết Y gồm các chữ số của X và viết theo thứ tự ngược lại Xuất ra kết quả là số Y mod 19

Input Output Giải thích

Trang 9

Bài 12 Số âm lớn nhất SOAM

(Tuyến sinh phổ thông năng khiếu 2007)

Cho một dãy gồm N số nguyên a1, a2, …, aN, mỗi số có giá trị tuyệt đối không vượt quá

105

Yêu cầu: Hãy tìm số âm lớn nhất X trong dãy.

Dữ liệu

• Dòng đầu tiên chứa số nguyên dương N (1≤N≤105)

N dòng tiếp theo, dòng thứ i chứa số a i

Input Output5

-4 3 2 -5 7

-4

Trang 10

Kết quả: Ghi một dòng duy nhất số X tìm được Trong trường hợp không có lời giải, ghi

Cho biểu thức S = 13 + 23 + + n3 = m2 với mọi m,n

thuộc N* Tổng các lũy thừa bậc 3 của n số nguyên

dương liên tiếp bằng m2, tính chất này đã được chứng

minh trong toán học

Yêu cầu: Kiểm chứng tính chất trên bằng cách tính giá trị của m với số nguyên dương n

Trang 11

Ouput: Mỗi dòng xuất ra giá trị m tương ứng tìm được

while i<n do i:=i*3;

if n=i then writeln(fo,1)

• Dòng đầu là số nguyên dương n (n ≤ 106) và s (s ≤ 106)

• N dòng sau, dòng thứ i là số nguyên dương ai (ai≤ 106)

Output: số cặp (ai, aj) thỏa đề bài

Trang 12

if S-a[i]>0 then inc(d,c[s-a[i]]);

if s=2*a[i] then dec(d);

Bài 15 Đoạn con liên tiếp DOANLT

Nhập số nguyên dương N Sau đó nhập 1 dãy a gồm N phần tử Bạn được cho m truy vấn, mỗi truy vấn cung cấp 2 số x, y, yêu cầu bạn phải tính tổng đoạn con liên tiếp từ a[x] đến a[y]

Input

Trang 13

• Dòng đầu là số nguyên N (0 < n < 106)

• Dòng sau gồm n số nguyên a1, a2, , an (|ai|<1000)

• Dòng tiếp theo là số nguyên dương m (0 < m < 106)

• M dòng tiếp theo, mỗi dòng ghi 2 số x, y (1 ≤ x ≤ y ≤ n)

Output: Xuất m dòng, dòng thứ i là kết quả của truy vấn thứ i.

2 5

4 6

12 0

Trang 14

• N dòng sau, mỗi dòng chứa một số nguyên của mảng A.

• 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ả gồm N+M dòng, lần lượt chứa các phần tử của mảng C.

for i:=1 to n do readln(ma[i]);

for i:=1 to m do readln(mb[i]);

Trang 15

Bài 17 Tạo mảng theo công thức TAOMANG

Em được cho trước số nguyên dương n, hai số nguyên dương a, m Hãy xác định dãy w1,

w2, …, wn theo công thức:

wi = ai mod m + 1Tính tổng của dãy số này

Trang 17

Bài 18 Đếm hình vuông COUNTSQ

Cho một lưới ô vuông kích thước M N Ô nằm trên giao của dòng i và cột j của lưới sẽ được gọi là ô (i, j) Trên ô (i, j) của lưới người ta viết số nguyên không âm aij Ta gọi hình vuông đồng nhất bậc 2 của lưới là tập gồm 4 ô nằm trên giao của hai dòng liên tiếp và 2 cột liên tiếp của lưới với các số viết trên chúng là như nhau

Yêu cầu: Tính số lớn nhất các hình vuông đồng nhất bậc 2 chứa cùng một số

Dữ liệu:

• Dòng đầu tiên chứa các số nguyên dương M, N (M, N ≤ 1000);

• Dòng thứ i trong số M dòng tiếp theo chứa các số ai1 ai2 aiN, i = 1, 2, , M, hai

số liên tiếp trên dòng được viết cách nhau một dấu cách 0 ≤ aij ≤ 255, i = 1,

Trang 18

Bài 19 Kiểm tra ngoặc đơn đúng NGOAC

Xét xâu S chỉ bao gồm các kí tự ngoặc mở ‘(‘ và ngoặc đóng ‘)’ Xâu S xác định một cách đặt ngoặc đúng, nếu thỏa mãn các điều kiện:

• Tổng số ngoặc đóng = tổng số ngoặc mở

5 (()) ()() (((()) ))((

(()))(()

YES YES NO NO NO

Trang 19

• Đi từ trái qua phải, ở bất cứ vị trí nào số đóng phải nhỏ hơn hoặc bằng số ngoặc

mở

Yêu cầu: cho biết một xâu s có là một cách đặt ngoặc đúng không?

Input

• Dòng dầu là số test t (0 < t < 100)

• t dòng sau, mỗi dòng 1 xâu s không quá 200 kí tự

Output: t dòng, mỗi dòng là kết quả 1 test tương ứng, xuất “YES” nếu cách đặt ngoặc

đúng, ngược lại xuất “NO”

Trang 20

END.

Bài 20 Giải nén xâu GNEN

Đề thi tin học trẻ bảng C tỉnh Quảng Bình năm 2009

Trong máy tính, để tiết kiệm bộ nhớ, người ta thường tìm cách nén dữ liệu Trong việc nén văn bản, ta sử dụng một phương pháp đơn giản được mô tả thông qua ví dụ sau:

Ví dụ:

• Với xâu ký tự: ‘aaaabbb’ sẽ được nén lại thành xâu ‘4a3b’

• Với xâu ký tự ‘aaab’ sẽ được nén lại thành xâu ‘3ab’

Cho một xâu ký tự St1 gồm các ký tự thuộc tập 'a' 'z' Gọi St là xâu nén của xâu St1 theo phương phápđược mô tả như trên Xâu St gồm N (1 ≤ N ≤ 255) ký tự thuộc tập các ký tự: 'a' 'z', '0' '9'

Yêu cầu: Hãy giải nén xâu St để được xâu gốc St1.

Dữ liệu vào: xâu ký tự St

Dữ liệu ra: Ghi xâu St1 là xâu sau khi đã được giải nén.

Trang 21

while st[i] in ['0' '9'] do begin xso:=xso+st[i]; i:=i+1; end;

Dữ liệu vào:Một dòng duy nhất ghi ba số nguyên A, B, K (1 ≤ A ≤ B ≤ 109, 1 ≤ K ≤ 109)

Dữ liệu vào đảm bảo luôn có nghiệm

Dữ liệu ra: Một dòng duy nhất ghi một số nguyên tìm được

Ví dụ:

96 105 3 102 Đoạn [96;105] có 4 số chia hết cho 3 là 96, 99, 102,

105 Dãy số trên được xếp theo thứ tự từđiển ởdạng xâu

Trang 22

Bài 22 Đếm kí tự khác nhau KTKHAC

Nhập xâu s chỉ chứa các chữ cái viết hoa Đếm xem s có bao nhiêu kí tự khác nhau

Input

• Dòng 1: số test t

• t dòng sau: mỗi dòng 1 xâu s ít hơn 255 kí tự

Output: t dòng, mỗi dòng là kết quả 1 test tương ứng.

Trang 23

Ví dụ

2 AABDDC NANGKHIEUTINHOC

4 11

for c:='A' to 'Z' do co[c]:=false;

for i:=1 to length(s) do co[s[i]]:=true;

Trang 25

Bài 23 COUNTCBG COUNT N

Với 1 số tự nhiên N(1<= N <= 10^9) ta có thể phân tích nó thành

tổng của một số số tự nhiên liên tiếp( tất nhiên những số này phải

nhỏ hơn N) Ví dụ với N = 5 ta có duy nhất 1 cách phân tích là 5 =

2+3 Bài toán đặt ra là cho số tự nhiên N, hãy cho biết có bao nhiêu

cách phân tích số tự nhiên N thành tổng của các số tự nhiên liên

if (n/i-(i-1)/2)=int(n/i-(j-1)/2) then inc(d);

if j<>i then if (n/j-(j-1)/2)=int(n/j-(j-1)/2) then inc(d);

5 4 13 45 100 234 3 175

1 1 0 1 5 2 5 1 5

Trang 26

• Dòng đầu tiên: số lượng test k.

• k dòng tiếp, mỗi dòng ghi số n - số lượng chữ số 1 của S (1 <= n <= 1000000)

Output: Với mỗi test ghi kết quả trên 1 dòng.

Output

212

1121

Trang 27

Nam có vẻ bối rối với câu đố của anh trai, các bạn hãy giúp Nam

giải quyết bài toán này nhé

Input: Gồm 3 số nguyên dương n, a, b (n, a, b ≤ 100)

Output: Gồm 1 dòng duy nhất là kết quả của bài toán

if a+1>n-b then max:=a+1 else max:=n-b;

if n+1<max then write(0)

else write(n-max+1);

Input Output

3 1 1 2

5 2 3 3

Trang 28

Bài 26 Giải mã tin nhắn TINNHAN

Có một tin nhắn được mã hóa và giấu trong một xâu văn bản trước khi gửi đi Quy tắc mã hóa tin nhắn là thay mỗi chữ cái trong tin nhắn thành một chữ cái đứng cách nó k vị trí trong bảng chữ cái tiếng Anh theo quy tắc xoay vòng, các ký tự không phải chữ cái thì không thay đổi Trong xâu có thể có nhiều tin nhắn, giữa các tin nhắn được ngăn cách nhau bởi dấu # Biết rằng tin nhắn có độ dài lớn nhất là tin nhắn cần tìm Nếu có nhiều tin nhắn có cùng chiều dài thì tin nhắn đầu tiên tìm thấy là tin nhắn cần giải mã

Yêu cầu: Cho trước một xâu S dài không quá 255 ký tự và một số nguyên dương k Hãy

tìm và giải mã tin nhắn được giấu trong xâu S

Input: Cho trong tệp văn bản có tên TINNHAN.INP gồm hai dòng:

− Dòng đầu: xâu S;

− Dòng thứ hai: số nguyên dương k

Ouput: Xuất ra tệp văn bản có tên TINNHAN.OUT gồm hai dòng:

− Dòng đầu: số lượng tin nhắn tìm được;

− Dòng thứ hai: nội dung tin nhắn cần tìm đã được giải mã

Ví dụ

ABC#QBTDBM#123HGF 1

2 PASCAL

Trang 29

for i:=1 to length(s) do

if s[i]<>'#' then x:=x+s[i]

Trang 30

if length(a[i])=lmax then inc(dem);

Bài 27 Đường đi PATH(NK 2006)

Một con robot di chuyển theo một chương trình định sẵn trên mặt phẳng toạ độ Chương trình này được thể hiện dưới dạng một dãy N lệnh (1≤N≤3000) Các lệnh thuộc một trong các dạng sau:

F S: Đi thẳng theo hướng hiện tại S bước.

R S: Rẽ phải 900 và đi S bước

L S: Rẽ trái 900 và đi S bước

Yêu cầu: Cho một chương trình điều khiển robot, hãy xác định chiều dài T đoạn đường

mà con robot đã đi được, biết mỗi bước của nó dài d(cm) Ban đầu con robot đứng tại vị

trí (0,0) và hướng theo chiều dương của trục hoành

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

Dòng đầu tiên chứa 2 số nguyên dương N và d.

N dòng tiếp theo, mỗi dòng chứa một lệnh theo quy cách nêu trên.

Kết quả: Ghi ra file PATH.OUT chứa chiều dài T tìm được.

Trang 31

Bài 28 MESSAGE1 VOI 2013 - Trao đổi thông tin

An và Bình thường trao đổi thông tin qua mạng Để tránh người khác đọc được, hai bạn

đã thống nhất cách truyền thông tin qua hai bước :

- Bước 1 : Giấu thông tin Nội dung thông tin cần gửi sẽ được giấu vào một bảng

kí tự hình chữ nhật bằng cách điền lần lượt các kí tự của xâu biểu diễn vào các ô của bảng từ trên xuống dưới theo mỗi hàng và từ trái qua phải theo mỗi cột Bảng này được đặt gọn vào một bảng kí tự hình chữ nhật có kích thước MxN lớn hơn Các ô trống của bảng MxN sẽ được điền kí tự ngẫu nhiên

- Bước 2 : Giải thông tin Bảng MxN được gửi qua mạng Vị trí đặt hình chữ nhật

chứa nội dung được gửi qua điện thoại bằng tin nhắn

Trong một lần An chuyển bảng A qua cho Bình, tuy nhiên Bình không nhận được An thực hiện lại và chuyển bảng B qua 2 bảng A và B đều chứa hình chữ nhật nội dung thông tin, tuy nhiên vị trí đặt hình này có thể khác nhau Em gái Bình biết được quy ước trao đổi thông tin Tò mò, cô muốn biết An đã gửi thông tin gì cho Bình bằng cách tìm một bảng hình chữ nhật có diện tích lớn nhất xuất hiện trong cả 2 bảng A và B

Input: Dòng đầu chứa T – số lượng testcase T nhóm dòng, mỗi nhóm miêu tả 1 testcase.

- Dòng thứ nhất chứa 2 số nguyên dương M, N

- Dòng thứ i trong M dòng tiếp theo chứa một xâu gồm N kí tự chỉ gồm các chữ cái

la tinh thường mô tả bảng A

Trang 32

- Dòng thứ j trong M dòng tiếp theo chứa một xâu gồm N kí tự chỉ gồm các chữ cái

la tinh thường mô tả bảng B

Output: Gồm T dòng, dòng thứ i ghi một số nguyên là diện tích hình chữ nhất lớn nhất

tìm được tương ứng với testcase thứ i

Example

Input Output Giải thích

1

4 5 tinaa hocaa aaaaa ccccc bbbbd btind bhocd Bbbbd

Trang 33

//xet cac hinh kich thuoc (u,v) bang a

for i:=1 to m-u do

for j:=1 to n-v do

//voi moi hinh bang a, xet tat ca

//cac hinh bang b

Trang 34

close(input);close(output);

END.

Bài 29 Từ dài nhất WORD

Hương có một xâu chứa các kí tự alphabe ‘a’…’z’ và các kí tự trống, cô ấy muốn tìm trong xâu các từ dài nhất có kí tự bắt đầu trùng với một kí tự bất kỳ nào đó trong xâu Một từ theo Hương là một xâu chứa các kí tự liên tiếp không có kí tự trống là xâu con của xâu đã cho Ví dụ, Hương có xâu ‘ toi lo lang cho viêc hoc tap qua’ Kí tự bắt đầu

mà Hương muốn tìm là ‘t’, như vậy từ phải tìm là ‘toi’ , ‘tap’

Yêu cầu: Tìm các từ dài nhất theo yêu cầu của Hương

Dữ liệu vào: có cấu trúc như sau:

• Dòng 1: Chứa một xâu chứa các kí tự thuộc ‘a’…’z’ và các kí tự trống Độ dài của xâu không quá 10000 ký tự

• Dòng 2: Chứa một kí tự bất kỳ thuộc ‘a’…’z’

Dữ liệu ra: Mỗi dòng ghi một tìm được

Trang 36

end

Bài 30 Tối giản phân số PHANSO

Một chuỗi được gọi là có dạng phân số nếu nó có dạng như sau: Tử_số/Mẫu_số

Ví dụ:

chuỗi ‘123/456’ biểu diễn cho phân số

chuỗi ‘1/12’ biểu diễn cho phân số

Yêu cầu: cho chuỗi có dạng phân số Sau đó xuất ra dạng tối giản của phân số đó.

Input: Xâu s biểu diễn phân số

Ouput: tối giản của phân số đó.

Trang 37

If (t1 mod i =0) and (m1 mod i=0) then

Ngày đăng: 30/01/2017, 21:15

HÌNH ẢNH LIÊN QUAN

Bảng của đồng hồ điện tử gồm một dãy ba số h, p và s thể hiện tương ứng giờ, phút và  giây của thời điểm hiện tại - 30 bai on thi HSG tin hoc
Bảng c ủa đồng hồ điện tử gồm một dãy ba số h, p và s thể hiện tương ứng giờ, phút và giây của thời điểm hiện tại (Trang 7)

TỪ KHÓA LIÊN QUAN

w