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.. 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
Trang 130 BÀI TẬP ÔN LUYỆN THI HSG TIN LỚP 9
Biên soạn: LÊ QUANG VINH Gv trường THPT chuyên Lương Thế Vinh Chuyên đề này cung cấp 30 bài tập về cấu trúc, kiểu dữ liệu lập trình cơ bản nhằm giúp quý thầy cô và các em học sinh THCS có thêm điều kiện rèn luyện chuẩn bị cho kì thi
HSG lớp 9 Các em có thể tham khảo thêm bài tập ở sách “Bồi dưỡng năng khiếu tin
học thuộc chương trình 3”, quyển 1, 2 Rất mong nhận được góp ý từ quý thầy cô và
các em học sinh Mọi góp ý xin gửi đến email lequangvinh1912@gmail.com
Xin chân thành cảm ơn!
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 2Bà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
Trang 3Nhap canh hinh vuong 5 Dien tich hinh tron la: 39.25
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?
Trang 4Bà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
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
Trang 5phú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 đó.
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ămchia hết cho 400 hoặc không tròn trăm nhưng chia hết cho 4
Trang 6Bà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 ?Chương trình Test
Trang 7Bài 9 Đồng hồ CLOCK
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ớiYêu cầu: Cho ba số h, p và s, hãy tìm 3 số
Trang 8Bài 10 Tiền taxi TAXI
Tính tiền đi taxi từ số km đã đi được nhập vào, biết:
Trang 9End
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
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
9
5 -4 3 2
-4
Trang 10 Dòng đầu tiên chứa số nguyên dương N (1N105).
N dòng tiếp theo, dòng thứ i chứa số a i
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
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 cho trước (1 ≤ n ≤
Trang 11Input: Gồm 1 số dòng, mỗi dòng có 1 số n duy nhất
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 12if 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 truyvấ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]
2 5
12 0
Trang 13 Dòng tiếp theo là số nguyên dương m (0 < m < 106)
Output: Xuất m dòng, dòng thứ i là kết quả của truy vấn thứ i.
Trang 14Kế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 15if (i<=n) then a:=ma[i]
Bài 17 Tạo mảng theo công thức TAOMANG
w2, …, wn theo công thức:
wi = ai mod m + 1Tính tổng của dãy số này
Trang 17Bà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ìnhvuô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à 2cộ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 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, 2, ,M; j = 1, 2, , N
Kết quả: số lượng hình vuông tìm được
Trang 18Bài 19 Kiểm tra ngoặc đơn đúng NGOAC
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ở
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
(()))(()
YES YES NO NO NO
Trang 19Output: 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”
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
Trang 20Trong 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ệcné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ụ:
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
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 21Dữ 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 22Bà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
Output: t dòng, mỗi dòng là kết quả 1 test tương ứng.
Trang 23for c:='A' to 'Z' do co[c]:=false;
for i:=1 to length(s) do co[s[i]]:=true;
Trang 24nhap;xuli;
Close(input);close(output);
END
Trang 25Bà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 tiếp.Input: Gồm nhiều dòng, mỗi dòng
chứa một số nguyên N (Giới hạn : số dòng <= 100)
Output Mỗi dòng ghi một số nguyên là số cách phân tích số N đọc được ở dòng tương
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);
1 1 0 1 5 2 5 1 5
Trang 261121
Trang 27Bài 25 Vị trí POS
Bạn Nam rất thông minh và chăm học Trong học kỳ vừa rồi, bạn ấy đã đạt danh hiệu họcsinh giỏi Phần thưởng cho thành tích này của cậu là được anh dắt đi xem phim Đứngtrong dòng người xếp hàng mua vé, vì là học sinh tò mò, Nam thắc mắc không hiểu làmình đứng ở vị trí thứ mấy trong hàng người đó Cậu bèn hỏi anh, muốn thử trí thôngminh của cậu em tò mò, anh bé Nam đưa ra câu đố:”Trong hàng bây giờ có n người, cókhông ít hơn a người đứng trước em, và không nhiều hơn b người đứng sau em, em thửđếm xem có bao nhiêu vị trí mà em có thể đứng trong hàng?”
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
if a+1>n-b then max:=a+1 else max:=n-b;
if n+1<max then write(0)
Trang 28close(input);close(output);
End
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áchnhau 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 tinnhắ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ã
Trang 29for i:=1 to length(s) do
if s[i]<>'#' then x:=x+s[i]
Trang 30Bà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
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:
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 31Bà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ảngnà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 Anthự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 dungthô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 ướctrao đổ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ìmmộ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
- 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
Trang 32Output: 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
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 34END.
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ìmtrong 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ủaxâ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:
xâu không quá 10000 ký tự
Dữ liệu ra: Mỗi dòng ghi một tìm được
Trang 36Bà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ố đó.