Professional Documents
Culture Documents
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
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
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
========================================================
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