You are on page 1of 15

BÀI 1: (6,0 điểm) BAI1.

PAS
Người ta định nghĩa: Từ là một nhóm ký tự đứng liền nhau.
Cho một xâu St gồm các ký tự lấy từ tập ‘a’ .. ‘z’ và dấu cách. Xâu không quá 20 từ, mỗi từ dài
không quá 10 ký tự.
Yêu cầu: Sắp xếp các từ của xâu ký tự theo thứ tự không giảm của độ dài các từ trong xâu St.
Dữ liệu vào: Cho trong file văn bản BAI1.INP, có cấu trúc:
- Dòng 1: Ghi một xâu ký tự St (có ít nhất 1 từ).
Dữ liệu ra: Ghi ra file văn bản BAI1.OUT, theo cấu trúc:
- Dòng 1: Ghi các từ của xâu ký tự sau khi được sắp xếp. Các từ được ghi cách nhau đúng một
dấu cách.
Ví dụ:
BAI1.INP BAI1.OUT
acb abcde abcd abc acb abc abcd abcde
Câu 2: (7,0 điểm) BAI2.PAS
Cho dãy số nguyên dương gồm N phần tử A1, A2,…, An.
Yêu cầu: Hãy liệt kê tất cả các dãy con gồm các phần tử đứng liên tiếp của dãy trên sao cho tổng
giá trị các phần tử của dãy con đó bằng M.
Dữ liệu vào: Cho trong file văn bản BAI2.INP, có cấu trúc như sau:
- Dòng 1: Ghi 2 số nguyên dương N và M. Hai số được ghi cách nhau ít nhất một dấu cách. (1 ¿
N ¿ 1000; 1 ¿ M ¿ 32000)
- Dòng 2: Ghi N số nguyên dương Ai. Các số được ghi cách nhau ít nhất một dấu cách. (1¿ Ai
¿ 10000 )

Dữ liệu ra: Ghi ra file văn bản BAI2.OUT, gồm nhiều dòng. Mỗi dòng ghi một dãy con tìm
được. Các dãy con được ghi theo thứ tự xuất hiện của nó trên dãy ban đầu. Các số trên cùng một
dòng được ghi cách nhau ít nhất một dấu cách.
Nếu không tìm được dãy con thỏa mãn điều kiện thì ghi ra file một số: 0.
Ví dụ:
BAI2.INP BAI2.OUT
11 6 3 1 2
1 4 3 1 2 1 6 5 1 4 1 6
5 1
1 4 1
5 6 0
1 2 5 2 1

BÀI 3: (7,0 điểm) BAI3.PAS


Cho dãy số nguyên không âm A1 A2... An. Người ta muốn chọn 2 chỉ số i, j sao cho
1<=i<=j<=N và xoá khỏi dãy 2 số Ai, Aj để tổng giá trị các số còn lại trong dãy là số chẵn. Yêu
cầu: Hãy đếm số lượng cách chọn 2 chỉ số i, j thoả mãn. Hai cách chọn khác nhau nếu tồn tại một
chỉ số khác nhau.
Dữ liệu vào: Vào từ file văn bản BAI3.INP
- Dòng 1 chứ số nguyên dương N (N<=106)
- Dòng 2 chứa N số nguyên không âm A1 A2…An (Ai<=103)
Dữ liệu ra: Ghi ra file BAI3.OUT
- Chỉ một dòng duy nhất chứa một số nguyên là số cách chọn 2 chỉ số thoả mãn.
Ví dụ:
BAI3.INP BAI3.OUT GIẢI THÍCH
5 6 Có 6 cách chọn 2 chỉ số i, j là: i = 1, j=2 tổng còn lại
A3+ A4+ A5 = 3 + 4 + 5 = 12 là số chẵn. Tương tự:
12345
i=1, j=4 và i=2; j=3 và i=2; j-5 và i=3; j=4 và i=4; j=5.
SỞ GIÁO DỤC VÀ ĐÀO TẠO HẢI PHÒNG ĐỀ THI CHỌN HỌC SINH GIỎI CẤP TRƯỜNG
TRƯỜNG THPT KIẾN THỤY NĂM 2017 – 2018
MÔN: TIN HỌC LẬP TRÌNH LỚP 11
Bài thi được làm trên máy vi tính
Thời gian: 150 phút, không kể thời gian phát đề

Bài 1: (2điểm – Tên bài: Bai1.PAS)


Mỗi số nguyên dương được gọi là “Đẹp” nếu số đó chia hết cho số ước nguyên dương của nó. Ví
dụ số 40 có 8 ước nguyên dương là: 1; 2; 4; 5; 8; 10; 20; 40. Và 40 lại chia hết cho 8. Vậy số 40
là số “Đẹp”.
Cho số nguyên dương N (0 < N < 2000).
Yêu cầu: Cho biết số N có “Đẹp” hay không?
Ví dụ: Input Output
Nhap so nguyen duong N: 40 Co

Nhap so nguyen duong N: 10 Khong

Bài 2: (4điểm – Tên bài: Bai2.PAS)


Nhập vào mảng A gồm N số nguyên a1, a2,..., aN (5 ≤ N ≤ 100). Yêu cầu:
a. Hãy đếm và đưa ra màn hình các cặp phần tử liền kề cùng chia hết cho 5.
b. Hãy đếm số lượng các phần tử là số nguyên tố (biết rằng: Số nguyên tố là số có 2 ước duy
nhất là 1 và chính nó).
Ví dụ: Input Output
Nhap so phan tu mang: 8 Khong co cap phan tu lien ke cung chia het cho 5
A: 3 4 6 8 19 12 15 6 So luong cac phan tu nguyen to la: 2
Nhap so phan tu mang: 6 Co 2 cap phan tu lien ke cung chia het cho 5 la: 15 5 5 30
A: 11 15 5 30 13 8 So luong cac phan tu nguyen to la: 3

Bài 3: (4điểm – Tên bài: Bai3.PAS)


Nhập vào một xâu kí tự. Yêu cầu:
a. Đếm số lượng từ trong xâu (biết rằng: Từ là tập hợp các kí tự cách nhau bởi 1 dấu cách trống).
b. Hãy loại ra khỏi xâu đó nhóm các kí tự nằm giữa dấu ngoặc (...), các dấu ngoặc cũng phải
được bỏ đi. Giả sử bên trong mỗi cặp dấu ngoặc không có các dấu ngoặc khác.
Ví dụ: Input Output
Nhap xau: Tin học (lap trinh) 11 (nang cao) So tu trong xau la : 7
Xau sau khi xoa dau ngoac:Tin hoc 11

--------- Hết ---------

NHÓM TRƯỞNG
(Kí tên)
ĐÁP ÁN THAM KHẢO VÀ BIỂU ĐIỂM CHẤM
Bài 1:
- Đáp án:
uses crt;
var n,i,d:word;
begin
clrscr;
write('Nhap so nguyen duong N:'); readln(n);
d:=0;
for i:=1 to n do
if n mod i = 0 then d:=d+1;
if n mod d = 0 then write('Co') else write ('Khong');
readln;
end.
- Biểu điểm (2 điểm):
+ Học sinh khai báo được các biến: 0.5đ
+ Nhập được dữ liệu cho biến: 0.5đ
+ Đưa ra output đúng: 1đ
Bộ Test tham khảo:
Số nguyên dương N Output
8 Co
10 Khong
60 Co
==========================================================
Bài 2:
- Đáp án:
uses crt;
var a,dem:array[1..100] of integer; ktnt,kt:array [1..100] of boolean;
i,j,n,d,dc:byte;
begin
clrscr;
write('Nhap so luong phan tu:'); readln(n);
for i:=1 to n do begin write('a[',i,']='); readln(a[i]);end;
dc:=0;
for i:=1 to n-1 do begin kt[a[i]]:= false;
if (a[i] mod 5 = 0)and (a[i+1] mod 5 = 0) then
begin
kt[a[i]]:= true; dc:=dc+1; end;end;
if dc = 0 then write('Khong co cap phan tu lien ke chia het cho 5')
else
write ('Co ',dc,' cap phan tu lien ke cung chia het cho 5 la:');
for i:=1 to n do
if kt[a[i]]= true then write(a[i]:3,a[i+1]:3);
writeln;
d:=0;
for i:=1 to n do
begin dem[a[i]]:=0; ktnt[a[i]]:=false;
for j:=1 to A[i] do
if a[i] mod j = 0 then dem[a[i]]:=dem[a[i]]+1;
if dem[a[i]]=2 then ktnt[a[i]]:= true; end;
for i:=1 to n do if ktnt[a[i]] = true then d:=d+1;
write('So luong phan tu nguyen to la:',d);
readln;
end.
- Biểu điểm (4 điểm)
+ Học sinh khai báo được các biến: 0.5đ
+ Học sinh nhập được mảng: 0.5 điểm
+ Làm được yêu cầu a: 1 điểm
+ Làm được yêu cầu b: 2 điểm.
- Bộ Test tham khảo:
Input Output
Nhap so phan tu mang: 5 Co 2 cap phan tu lien tiep cung chia het cho 5 la: 70 55 40 75
A: 70 55 4 40 75 So luong phan tu nguyen to la: 0
Nhap so phan tu mang: 7 Khong co cap phan tu lien tiep cung chia het cho 5
A: 3 4 8 19 12 15 6 So luong phan tu nguyen to la: 2
Nhap so phan tu mang: 6 Co 3 cap phan tu lien tiep cung chia het cho 5 la: 10 15 15 5 5 30
A: 10 15 5 30 13 11 So luong phan tu nguyen to la: 3

========================================================
Bài 3:
- Đáp án:
uses crt;
var s: string; i,n,d,vt1,vt2: byte;
begin
clrscr;
write('Nhap xau:'); readln(s);
while s[1]=' ' do delete(s,1,1);
while s[length(s)]=' ' do delete(s, length(s),1);
while pos(' ',s) <>0 do delete(s,pos(' ',s),1);
d:=0;
for i:=1 to length(s) do if s[i]=' ' then d:=d+1;
write('So luong tu trong xau la:', d+1);
writeln;
repeat
n:=length(s);
vt1:=pos('(',s);
vt2:=pos(')',s);
if vt1<>0 then delete(s,vt1,vt2-vt1+1);
until vt1=0;
write('Xau loai bo tu va dau ngoac la:',s);
readln;
end.
- Biểu điểm (4 điểm)
+ Học sinh khai báo được biến: 0.5đ
+ Học sinh nhập được xâu: 0.5đ
+ Làm được yêu cầu a: 1đ
+ Làm được yêu cầu b: 2 điểm.
- Bộ Test tham khảo:
Input Output
Nhap xau: So luong tu trong xau la: 4
Toi (rat) thich hoa Xau loai bo tu va dau ngoac la: Toi thich hoa
Nhap xau: So luong tu trong xau la: 7
Tin hoc (lap trinh) 11 (nang cao) Xau loai bo tu va dau ngoac la: Tin hoc 11
Nhap xau: So luong tu trong xau la: 6
Thu do Ha Noi (rat dep) Xau loai bo tu va dau ngoac la: Thu do Ha Noi

Giáo viên ra đề: Bùi Thị Thu Hà - Tổ Toán Tin.


SỞ GIÁO DỤC VÀ ĐÀO TẠO HẢI PHÒNG ĐỀ THI CHỌN HỌC SINH GIỎI CẤP TRƯỜNG
TRƯỜNG THPT KIẾN THỤY NĂM HỌC 2015 – 2016
MÔN: TIN HỌC LẬP TRÌNH LỚP 11
Bài thi được làm trên máy vi tính
Thời gian: 150 phút, không kể thời gian phát đề

TỔNG QUAN VỀ ĐỀ THI

Tên bài Tên chương trình nguồn Điểm


Bài 1 Bai1.PAS 2
Bài 2 Bai2.PAS 4
Bài 3 Bai3.PAS 4

Bài 1:
Viết chương trình tìm tất cả các số tự nhiên có ba chữ số. Biết rằng, số đó chia cho 6 dư 2 và
tổng các chữ số của nó bằng 20.
Ví dụ: 398, 488, ....
Bài 2:
Nhập vào mảng A gồm N số nguyên a1, a2,..., aN (5 ≤ N ≤ 100). Yêu cầu:
a. Hãy đưa ra các phần tử ở vị trí chẵn có giá trị lẻ.
b. Đưa ra dãy con dài nhất gồm các phần tử liên tiếp chia hết cho 3.
Ví dụ:
Input Output
Nhap so phan tu mang: 8 Khong co phan tu thoa man
A: 1 4 6 8 9 12 15 6 Day con can tim la: 9 12 15 6
Nhap so phan tu mang: 5 Phan tu thoa man la: 13 19
A: 11 13 8 19 7 Khong co day con can tim
Bài 3:
Viết chương trình nhập vào hai xâu S1 và S2 là họ tên của hai người. Yêu cầu:
a. Đếm tổng số lượng các kí tự nằm trong hai xâu (không kể dấu cách).
b. Hai xâu vừa nhập có bao nhiêu kí tự giống nhau? (không phân biệt chữ hoa, chữ thường)
Ví dụ:
Input Output
S1: Nguyen Thi An Tong so ki tu nam trong 2 xau la: 22
S2: Hoang Van An Hai xau co 5 ki tu giong nhau
S1: Tran Thu Huong Tong so ki tu nam trong 2 xau la: 16
S2: Le My Hai xau khong co ki tu nao giong nhau

--------- Hết ---------


ĐÁP ÁN THAM KHẢO VÀ BIỂU ĐIỂM CHẤM
Bài 1:
- Đáp án:
var a,b,c:byte;
begin
for a:=1 to 9 do
for b:=0 to 9 do
for c:=0 to 9 do
if ((100*a + 10*b +c)mod 6 = 2) and ((a+b+c) = 20) then
writeln((100*a+10*b+c):5);
readln;
end.
- Biểu điểm (2 điểm)
Học sinh đưa ra được 16 chữ số cần tìm là: 398 ; 488; 578; 596; 668; 686; 758; 776; 794; 848;
866; 884; 938; 956; 974; 992
==========================================================
Bài 2:
- Đáp án:
uses crt;
var n,i,j,bd,max:byte;kt1,kt2:boolean;
a,dem:array[1..100] of integer;
begin
clrscr;
write('Nhap so phan tu mang: ');
readln(n);
for i:=1 to n do
begin
write('A[',i,']:');
readln(A[i]);
end;
for i:=1 to n do
if (a[2*i] mod 2<> 0 ) then kt1:=true else kt2:=false;
if kt1=true then
begin
write('Cac phan tu thoa man la: ');
for i:=1 to n do
if a[2*i] mod 2<> 0 then write(a[2*i]:3);
end;
if (kt1=false)and( kt2=false) then Write('Khong co phan tu thoa man');
writeln;
for i:=1 to n do dem[i]:=0;
for i:=1 to n do
for j:=i to n do
if a[j] mod 3 = 0 then dem[i]:= dem[i]+1 else break;
dem[1]:= max;
for i:=1 to n do
if dem[i] > max then
begin
max:=dem[i];
bd:=i;
end;
if max = 0 then write('Khong co day con can tim')
else begin
write('Day con can tim la: ');
for i:=bd to bd+(max-1) do write(a[i]:4);
end;
readln;
end.
- Biểu điểm (4 điểm)
+ Học sinh nhập được mảng: 1 điểm
+ Làm được yêu cầu a: 1 điểm
+ Làm được yêu cầu b: 2 điểm.
- Bộ Test tham khảo:

Test Input Output


Nhap so phan tu mang: 4 Khong co phan tu thoa man
1
A: 1 2 3 4 Day con can tim la: 3
Nhap so phan tu mang: 5 Phan tu thoa man la: 13
2
A: 11 13 7 2 7 Khong co day con can tim
Nhap so phan tu mang: 8 Phan tu thoa man la: 3 7
3
A: 1 3 6 7 9 12 15 6 Day con can tim la : 9 12 15 6

========================================================
Bài 3:
- Đáp án:
uses crt;
var s1,s2,s3: string; kt:array[1..255] of boolean;
i,j,d:byte; m1,m2:array[1..255] of byte;
begin
clrscr;
Write('Nhap s1: '); readln(s1);
Write('Nhap s2: '); readln(s2);
for i:=1 to length(s1) do if s1[i]=' ' then delete(s1,i,1);
for j:=1 to length(s2) do if s2[j]=' ' then delete(s2,j,1);
write('Tong so luong ki tu nam trong hai xau la:', length(s1)+length(s2));
writeln;
for i:=1 to length(s1) do begin
s1[i]:= upcase(s1[i]);
m1[i]:= ord(s1[i]);
end;
for j:=1 to length(s2) do begin
s2[j]:= upcase(s2[j]);
m2[j]:= ord(s2[j]);
end;
for i:=1 to length(s1) do kt[m1[i]]:= false;
for i:=1 to length(s1) do
if kt[m1[i]]= false then
for j:=1 to length(s2) do
if m1[i] = m2[j] then
begin
s3[i]:=s1[i];
kt[m1[i]]:= true;
d:=d+1;
break;
end;
if d= 0 then write('Hai xau vua nhap khong co ki tu giong nhau') else
writeln('Co ',d+1,' ki tu giong nhau');

readln;
end.
- Biểu điểm (4 điểm)
+ Học sinh nhập được xâu: 1 điểm
+ Làm được yêu cầu a: 1 điểm
+ Làm được yêu cầu b: 2 điểm.
- Bộ Test tham khảo:
Test Input Output
S1: Nguyen Thi Lan Tong so luong ki tu nam trong 2 xau la: 22
1
S2: Hoang Van An Hai xau co 5 ki tu giong nhau
S1: Ngo Bao Minh Tong so luong ki tu nam trong 2 xau la: 20
2
S2: Vu Thuy Vinh Hai xau co 4 ki tu giong nhau
S1: Tran Thu Huong Tong so luong ki tu nam trong 2 xau la: 16
3
S2: Le My Hai xau khong co ki tu giong nhau

You might also like