Tải bản đầy đủ (.doc) (48 trang)

Tổng họp các đề thi HSG tin học các tỉnh có đáp án

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (419.41 KB, 48 trang )

Tổng hợp các bài tập

Sở GD&ĐT Hậu Giang
2014-2015
Phòng GD&ĐT Long Mỹ

ĐỀ THI HỌC SINH GIỎI HUYỆN NĂM HỌC
Môn: Tin Học 8
Thời gian làm bài: 120 phút

(Các tập tin lưu trong thư mục D:\SBD\, trong đó SBD là số báo danh của thí sinh)
Bài
Tên tập tin
1
Bai1.pas
2
Bai2.pas
3
Bai3.pas
Bài 1: (6 điểm) Viết chương trình cho phép nhập vào số nguyên n (1≤n≤10000). In ra màn
hình giá trị của biểu thức: T = 1 +

1 1 1
1
+ 2 + 2 ..... + 2 . (Kết quả làm tròn 2 chữ số ở phần
2
2 3 4
n

thập phân)
Ví dụ:


Dữ liệu vào (bàn phím)
10
105

Dữ liệu ra (màn hình)
1.55
1.64

Bài 2: (7 điểm) Viết chương trình cho phép nhập vào dãy số nguyên gồm n phần tử
(1≤n≤100)
a) Tinh trung bình cộng của các phần tử lớn hơn 0 có trong dãy số.
(Kết quả làm tròn 2 chữ số ở phần thập phân)
b) Hiện ra màn hình các số nguyên tố có trong dãy số trên.
Ví dụ:
Dữ liệu vào (bàn phím)
Dữ liệu ra (màn hình)
12 -6 5 14 11 31 -7
14.600
5 11 31
32 -9 -7 7 3 -23
14.000
7 3
Bài 3: (7 điểm) Nhập vào 1 số tự nhiên N với (0 < N ≤ 65535).
a) Hãy cho biết chữ số lớn nhất của số tự nhiên vừa nhập.
b) Kiểm tra xem số đó có đối xứng không.
Ví dụ:
Dữ liệu vào (bàn phím)
Dữ liệu ra (màn hình)
3521
5

Khong doi xung
32123
3
Doi xung
------------------Hết-----------------• Thí sinh không được sử dụng tài liệu
• Giám thị không giải thích gì thêm


Bài
Bai1.pas
(6 điểm)

Bai2.pas
(7 điểm)

Bai3.pas
(7 điểm)

HƯỚNG DẪN CHẤM ĐIỂM
(Chấm theo bộ Test)
Dữ liệu vào (bàn phím)
Dữ liệu ra (màn hình)
1
1.00
15
1.58
605
1.64
7
7

7
6 3 4 7
5
3 7
-5 -8 -3
<Khoảng trắng>
<Khoảng trắng>
-8 2 7 11 9 13 -21
8.400
2 7 11 13
7
7
Doi xung
4589
9
Khong doi xung
44788744
8
Doi xung
56165

6
Doi xung

Điểm














CHƯƠNG TRÌNH THAM KHẢO
Program bai1;
Uses crt;
Var i,n: integer;
t: real;
Begin
Clrscr;
Write('Nhap n: '); readln(n);
t:=0;
for i:=1 to n do t:=t+1/(i*i);
Writeln('T=',t:0:2);
Readln;
End.
Program bai2;
Uses crt;
Var i,j,n,d,t: integer;
a: array[1..100] of Integer;
Begin
Clrscr;
Write('Nhap n: '); readln(n);
For i:=1 to n do
Begin

Write('Nhap phan tu thu ',i,': '); readln(a[i]);
end;
d:=0; t:=0;
For i:=1 to n do
if a[i]>0 then
begin
t:=t+a[i];
d:=d+1;
end;
Writeln('Trung binh cong cua cac phan tu lon ho 0 la: ', t/d:0:3);
Writeln('Cac so nguyen to co trong day so la: ');
For i:=1 to n do
begin
d:=0;
for j:=1 to a[i] do if a[i] mod j=0 then d:=d+1;
if d=2 then Write(a[i],' ');
end;
Readln;
End.
Program bai3;
Uses crt;
Var s,s1,max: string;
i: integer;
Begin
Clrscr;
Write('Nhap n: '); readln(s);
max:='';
for i:=1 to length(s) do if s[i]>max then max:=s[i];
Writeln('Chu solon nhat la ',max);
s1:='';

for i:=length(s) downto 1 do s1:=s1+s[i];
if s1=s then writeln(s,' la xau doi xung')
else writeln(s,' khong la xau doi xung');
Readln;
End.


SỞ GD&ĐT QUẢNG BÌNH
ĐỀ CHÍNH THỨC

KÌ THI CHỌN HSG TỈNH NĂM HỌC 2013-2014
Khóa thi ngày 28 - 3 - 2014
Môn: Tin học
LỚP 9 THCS

Họ và tên: ………………………..
Số báo danh: ………..…………..

Thời gian: 150 phút (không kể thời gian giao đề)
Đề gồm có 02 trang

ĐỀ RA
Sử dụng ngôn ngữ lập trình Turbo Pascal để lập trình giải các bài toán sau:
Câu 1: (3,0 điểm) Đếm ký tự

DEMKT.PAS

Cho một xâu ký tự St có độ dài tối đa 255 ký tự, các ký tự được lấy từ tập: ‘a’ … ‘z’; ‘A’
… ‘Z’; ‘0’ … ‘9’.
Yêu cầu: Hãy đếm số lần xuất hiện của các ký tự chữ cái in hoa trong xâu.

Dữ liệu vào: Ghi trong file văn bản DEMKT.INP có cấu trúc như sau:
- Dòng 1: Ghi xâu St.
Dữ liệu ra: Ghi ra file văn bản DEMKT.OUT theo cấu trúc như sau:
- Dòng 1: Ghi số D là số lượng các kí tự đếm được.
Ví dụ:
DEMKT.INP
DEMKT.OUT
Ki thi chon HSG lop 9 Nam 2014
5
Câu 2: (3,5 điểm) Tập con

TAPCON.PAS

Cho tập A có N phần tử {a 1, a2, ..., an}, tập B được gọi là tập con của tập A nếu tập B có M
phần tử {b1, b2, ..., bm} thỏa mãn các điều kiện: Các phần tử của tập B được lấy từ tập A (b i ∈ A, ∀i
= 1..m) và các phần tử trong tập B khác nhau từng đôi một (bi ≠ bj, ∀i ≠ j).
Ví dụ: Cho tập A = {1, 9, 4, 5, 9, 5, 8, 9} thì tập B = {1 4 5 8 9}.
Yêu cầu: Tìm tập B sao cho số phần tử của tập B là lớn nhất.
Dữ liệu vào: Ghi trong file văn bản TAPCON.INP có cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương N (1 ≤ N ≤ 10000).
- Dòng 2: Ghi N số nguyên dương, số thứ i là giá trị của phần tử a i trong tập A (1 ≤ i ≤ N, 0
< ai ≤ 32000). Các số được ghi cách nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra file văn bản TAPCON.OUT theo cấu trúc:
- Dòng 1: Ghi số nguyên dương M là số lượng phần tử của tập B tìm được.
- Dòng 2: Ghi M số nguyên dương, số thứ i là giá trị phần tử bi trong tập B tìm được. Các số
được ghi cách nhau một dấu cách.
Ví dụ:
TAPCON.INP
8
1 9 4 5 9 5 8 9


TAPCON.OUT
5
1 4 5 8 9

Câu 3: (3,5 điểm) Độ cao của dãy số

DOCAO.PAS

Ta gọi độ cao của một số nguyên dương K là tổng giá trị các chữ số của K.
Ví dụ: số 25362 có độ cao là 18.
Cho dãy số nguyên dương A gồm N phần tử a1, a2, ..., aN.
(1 ≤ N ≤ 1000, 1 ≤ i ≤ N, 0 < ai ≤ 2147483647)
Yêu cầu: Hãy tính độ cao của các phần tử trong dãy số A.


Dữ liệu vào: Ghi trong file văn bản DOCAO.INP có cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương N, là số lượng phần tử của dãy số.
- Dòng 2: Ghi N số nguyên dương, số thứ i là giá trị của phần tử a i trong dãy số, các số được ghi
cách nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra file văn bản DOCAO.OUT theo cấu trúc như sau:
- Dòng 1: Ghi N số nguyên dương t 1, t2, ..., tN, ti là độ cao của số của a i. Các số được ghi cách nhau
một dấu cách.
Ví dụ:
DOCAO.INP
5
247

13
5


32000

334

5

DOCAO.OUT
5 10 9

27

....... Hết .......
HƯỚNG DẪN VÀ ĐÁP ÁN CHẤM
ĐỀ THI CHỌN HSG LỚP 9 THCS NĂM HỌC 2013-2014
Môn: Tin học
Khóa thi ngày 28 - 3 - 2014

I- Phương pháp:
- Giám khảo tạo bộ dữ liệu vào, tính toán kết quả. Thực hiện chương trình của
học sinh và so sánh kết quả.
- Giám khảo có thể sử dụng chương trình gợi ý dưới đây để tính toán kết quả của dữ liệu vào.
- Đối với câu 1: Giám khảo phải tạo được 06 bộ test, chương trình học sinh đúng 01 bộ test
giám khảo cho 0.5 điểm. Trong 06 bộ test giám khảo phải tạo được 01 bộ test có xâu dữ liệu vào có
255 kí tự.
- Đối với câu 2: Giám khảo phải tạo được 07 bộ test, chương trình học sinh đúng 01 bộ test thì
giám khảo cho 0.5 điểm. Trong 07 bộ test giám khảo phải tạo được 01 bộ test có N = 10000.
- Đối với câu 3: Giám khảo phải tạo được 07 bộ test, chương trình học sinh đúng 01 bộ test
giám khảo cho 0.5 điểm. Trong 07 bộ test giám khảo phải tạo được 01 bộ test có N = 1000.


II- Chương trình gợi ý:
Câu 1: (3,0 điểm) Đếm ký tự
Program Dem_ky_tu_chu_cai_in_hoa;
Const
fi='DEMKT.IN1';
fo='DEMKT.OUT';
Var St: String;
Procedure Read_Data;
Var f:Text;
Begin
Assign(f,fi);
Reset(f);
Readln(f,St);
Close(f);
End;
Function Count_Char:Integer;
Var Count,i:Integer;
Begin
Count:=0;
For i:=1 to Length(St) do
If (St[i] >= 'A') and (St[i] <= 'Z') then
inc(Count);
Count_Char:=Count;

DEMKT.PAS


End;
Procedure Write_Data;
Var f:Text;

Begin
Assign(f,fo);
Rewrite(f);
Writeln(f,Count_Char);
Close(f);
End;
BEGIN
Read_Data;
Write_Data;
END.

Câu 2: (3,5 điểm) Tập con

TAPCON.PAS

Program Tap_con;
const
fi='TAPCON.INP';
fo='TAPCON.OUT';
type mmc=array[0..32000] of Boolean;
var a:mmc;
f:text;
n,d:word;
i,x:word;
Begin
Fillchar(A,sizeof(A),0);
Assign(f,fi);
Reset(f);
Readln(f,n);
For i:=1 to n do

Begin
read(f,x);
A[x]:=True;
End;
close(f);
assign(f,fo);
rewrite(f);
d:=0;
For i:= 1 to 32000 do
if A[i] then inc(d);
Writeln(f,d);
For i:=1 to 32000 do
if A[i] then write(f,i,' ');
close(f);
End.

Câu 3: (3,5 điểm) Độ cao của dãy số
Program Do_cao_cua_day_so;
Const
fi='DOCAO.INP';
fo='DOCAO.OUT';
MaxN=1000;
Type
mmcl=Array[0..MaxN] of Longint;
Var
A:mmcl;
K:mmcl;
N:Longint;
Procedure Read_Data;
Var f:Text;

i:Longint;
Begin
Assign(f,fi);
Reset(f);
Readln(f,N);
For i:=1 to N do
Read(f,A[i]);

DOCAO.PAS


Close(f);
End;
Function Sum(M:Longint):Longint;
Var d:Longint;
Begin
d:=0;
While M <> 0 do
Begin
d:=d+M mod 10;
M:=M div 10;
End;
Sum:=d;
End;
Procedure Process;
Var i:Longint;
Begin
Fillchar(K,Sizeof(K),0);
For i:=1 to N do
K[i]:=Sum(A[i]);

End;
Procedure Write_Data;
Var f:Text;
i:Longint;
Begin
Assign(f,fo);
ReWrite(f);
For i:=1 to N do
Write(f,K[i], ' ');
Close(f);
End;
BEGIN
Read_Data;
Process;
Write_Data;
END.


SỞ GD&ĐT QUẢNG BÌNH

KÌ THI CHỌN HSG TỈNH NĂM HỌC 2014-2015
Khóa thi ngày 17 - 3 - 2015
ĐỀ CHÍNH THỨC
Môn: Tin học
LỚP 9 THCS
Họ và tên: …………………………..
Thời gian: 150 phút (không kể thời gian giao đề)
Số báo danh: ………..……………....
Đề gồm có 02 trang


ĐỀ RA
Sử dụng ngôn ngữ lập trình Turbo Pascal để lập trình giải các bài toán sau:
Bài 1: (3,0 điểm): Sắp xếp xâu
SAPXEP.PAS
Xâu kí tự St được lấy từ tập các ký tự ’a’...’z’, ’0’...’9’ và có độ dài tối đa là 255 kí
tự. Cho N xâu kí tự St (0 < N ≤ 200).
Yêu cầu: Thực hiện sắp xếp N xâu kí tự St theo thứ thự không giảm của số lượng các kí tự
chữ số có trong mỗi xâu St.
Dữ liệu vào: Cho trong file văn bản SAPXEP.INP có cấu trúc như sau:
- Dòng 1: Ghi số nguyên N.
- N dòng tiếp theo: Mỗi dòng ghi một xâu St.
Dữ liệu ra: Ghi ra file văn bản SAPXEP.OUT theo cấu trúc như sau:
- Ghi N dòng: Mỗi dòng ghi một xâu St, các xâu được ghi theo thứ tự đã sắp xếp.
Ví dụ:
SAPXEP.INP

SAPXEP.OUT
cb1
1cd7hdcbae
c1x2y3z

3
c1x2y3z
cb1
1cd7hdcbae
Bài 2: (3,5 điểm): Số hoàn hảo
SOHH.PAS
Cho số nguyên dương N (0 < N ≤ 20000). M là tổng giá trị các ước số của N. Số N
được gọi là “Số hoàn hảo” nếu M bằng 2xN. Ví dụ: Cho số N = 6 ta có N là “Số hoàn hảo”
vì N có tổng các ước số là M = 1+ 2 + 3 + 6 = 12= Nx2.

Cho 2 số nguyên dương P và Q (0< P ≤ Q ≤ 20000).
Yêu cầu: Hãy tìm tất cả các “Số hoàn hảo” nằm trong đoạn [P;Q].
Dữ liệu vào: Cho trong file văn bản SOHH.INP có cấu trúc như sau:
- Dòng 1: Ghi hai số P và Q cách nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra file văn bản SOHH.OUT theo cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương D là số lượng các “Số hoàn hảo” tìm được.
- Dòng 2: Ghi các số hoàn hảo tìm được, các số cách nhau ít nhất một dấu cách.
Ví dụ:
SOHH.INP
1 30

SOHH.OUT
2
6 28

SOHH.INP
10 20

SOHH.OUT
0


Bài 3: (3,5 điểm): Dãy con tăng
DAYCON.PAS
Cho một dãy số nguyên a1, a2,..., an. Khi xoá một số phần tử của dãy và giữ
nguyên thứ tự của các phần tử còn lại ta được một dãy gọi là dãy con của dãy đã cho.
Một dãy con a1, a2,..., ak được gọi dãy tăng nếu aiYêu cầu: Hãy xác định dãy con tăng có số lượng phần tử lớn nhất.
Dữ liệu vào: Cho trong file văn bản DAYCON.INP, có cấu trúc như sau:
- Dòng 1: Ghi số nguyên N là số phần tử của dãy (1 ≤ N ≤ 1000)

- Dòng 2: Ghi N số nguyên a1, a2,...,an là các phần tử của dãy (1 ≤ ai ≤ 32000).
Các số được ghi cách nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra file văn bản DAYCON.OUT, theo cấu trúc như sau:
- Dòng 1: Ghi số M là số lượng phần tử lớn nhất của dãy con tìm được.
- Dòng 2: Ghi M số nguyên là chỉ số của M phần tử trong dãy con tìm được
theo thứ tự tăng dần. Các số được ghi cách nhau một dấu cách. (Nếu có nhiều dãy
con thỏa mãn, chỉ cần ghi một dãy con)
Ví dụ:
DAYCON.INP
DAYCON.OUT
11
6
10 100 20 1 2 3 30 20 103 104 80 4 5 6 7 9 10
....... Hết .......
HƯỚNG DẪN VÀ ĐÁP ÁN CHẤM
ĐỀ THI CHỌN HSG LỚP 9 THCS – NĂM HỌC 2014-2015
Môn: Tin học
Khóa thi ngày 17 - 3 - 2015

I- Phương pháp:
- Giám khảo tạo bộ dữ liệu vào, tính toán kết quả. Thực hiện chương trình của học sinh và so
sánh kết quả.
- Giám khảo có thể sử dụng chương trình gợi ý dưới đây để tính toán kết quả của dữ liệu vào.
- Đối với câu 1: Giám khảo phải tạo được 06 bộ test, chương trình học sinh đúng 01 bộ test
giám khảo cho 0.5 điểm.
- Đối với câu 2:
+ Giám khảo phải tạo được 07 bộ test, chương trình học sinh đúng 01 bộ test thì giám khảo
cho 0.5 điểm.
- Đối với câu 3:
+ Có thể có nhiều kết quả đúng, nếu học sinh đưa ra kết quả đúng nhưng khác với kết quả

của giám khảo thì vẫn cho điểm tối đa.


+ Giám khảo phải tạo được 05 bộ test, chương trình học sinh đúng 01 bộ test giám khảo cho
0.7 điểm (trong đó nếu đưa ra được tổng tiền thì cho 0.5 điểm, đưa ra được phương án chọn thì cho
0.2 điểm).
+ Giám khảo phải tạo được 01 bộ test có N> = 900.

II- Chương trình gợi ý:
Câu 1:
Program Sap_xep_xau;
Const Max=200;
Var
A:Array[1..max]of string;
i,N,j,l:Integer;
f,f1:text;
tg:string;
Function DS(S1:String):Integer;
Var Dem:Integer;
Begin
Dem:=0;
For l:=1 to length(S1) do
If (S1[l]>='0') and (S1[l]<='9') then
Inc(dem);
DS:=dem;
End;
BEGIN
Assign(f,’sapxep.inp’);Reset(f);Readln(f,n);
For i:=1 to N do Readln(f,a[i]);
For j:=N downto 2 do

for i:=1 to j-1 do
If Ds(A[i])>Ds(a[i+1]) then
Begin
TG:=a[i];
a[i]:=a[i+1];
a[i+1]:=TG;
End;
Assign(f1,’sapxep.out’);Rewrite(f1);
for i:=1 to N do
Writeln(f1,a[i]);
Close(f);Close(f1);
End.

Bài 2:
Program SO_HH;
Const fi='SOHH.INP';
fo='SOHH.OUT';
Var
i,j,N,dem,l, P,Q:Longint;
A:Array[1..1000] of longint;
Function KT(N:Longint):Boolean;
Var Tu:Integer;
Begin
Tu:=0;
For l:=1 to trunc(sqrt(N)) do
If (N mod l =0) then
If sqrt(N)>l then
Begin
Tu:=Tu+l;
Tu:=Tu+N div l;

End
Else Tu:=tu+l;
If Tu=2*N then KT:=true
Else Kt:=False;


End;
Procedure Read_Data;
Var f:text;
Begin
Assign(f,fi);
Reset(f);
Readln(f,P,Q);
Close(f);
End;
Procedure Process;
Var TG:string;
Begin
j:=1;
Dem:=0;
For i:=P to Q do
If Kt(i) then
Begin
Inc(dem);
A[j]:=i;
Inc(j);
End
ENd;
Procedure Write_Data;
Var f:Text;

Begin
Assign(f,fo);
Rewrite(f);
Writeln(f,Dem);
for i:=1 to dem do
Write(f,a[i],' ');
Close(f);
End;
BEGIN
Read_data;
Process;
Write_Data;
End.

Bài 3:
Const max=10000;
Var
a,t,l:array[0..max+1]of integer;
n:word;
f,f1:text;
j,i,jmax:integer;
BEGIN
Assign(f,'daycon.inp');Reset(f);Readln(f,n);
For i:=1 to n do Read(f,a[i]);
a[0]:=-32768;
a[n+1]:=32767;
l[n+1]:=1;
For i:=n downto 0 do
Begin
jmax:=n+1;

For j:=i+1 to n+1 do
If (l[jmax]jmax:=j;
l[i]:=l[jmax]+1;
t[i]:=jmax;
End;
Assign(f1,'D:\khanh\daycon.out');Rewrite(f1);
Writeln(f1,l[0]-2);


i:=t[0];
While i<>n+1 do
Begin
Write(f1,i,' ');
i:=t[i];
End;
close(f);close(f1);
writeln('Da xu ly xong');
readln;
END.


phòng giáo dục và đào tạo thanh thủy
đề thi chọn học sinh giỏi lớp 9 THCS năm học 2014 - 2015
môn tin học
Đề chính thức

Thời gian: 150 phút, không kể thời gian giao đề
(Đề thi có 01 trang)


Bi 1. (4,0 im)
Vit chng trỡnh nhp s t nhiờn n v tớnh giỏ tr biu thc Sn:
Sn =

1 2 3
n
+ + + ... +
2 3 4
n +1

Tờn tp tin: D:\Thi HSG<SBD>\Bai1.pas
D:\Thi HSG<SBD>\Bai1.doc
Bi 2.(4,0 im)
Vit chng trỡnh kim tra mt s t nhiờn N (N<10000) c nhp vo t bn
phớm cú phi l s hon chnh hay khụng?
Bit rng s hon chnh l mt s cú tng cỏc c nh hn nú bng chớnh nú.
Vớ d: S 6 cú cỏc c nh hn nú l 1, 2, 3. Tng cỏc c 1 + 2 + 3 = 6. Vy
6 c gi l s hon chnh.
Tờn tp tin: D:\Thi HSG<SBD>\Bai2.pas
D:\Thi HSG<SBD>\Bai2.doc
Bai 3. (7,0 iờm)
Vit chng trỡnh nhp t bn phớm hai s nguyờn dng a, b v thc hin:
a) In ra s i xng ca s nguyờn dng a v i xng ca s nguyờn dng
b.
b) In ra tng ca s i xng vi a v s i xng vi b
Bit rng ta gi s i xng vi s a l s nguyờn dng thu c t a bng
cỏch o ngc th t cỏc ch s ca a.
Vớ d: nhp s a = 12, s b = 23 cho kt qu:
a) S i xng vi s a = 12 l 21; S i xng vi s b = 23 l 32.
b) Tng ca s i xng vi a = 12 v s i xng vi b = 23 l: 21 + 32 = 53.

Tờn tp tin: D:\Thi HSG<SBD>\Bai3.pas
D:\Thi HSG<SBD>\Bai3.doc
Bai 4.(5,0 iờm)
Vit chng trỡnh to mng bao gm N s nguyờn t u tiờn. S t nhiờn N
c nhp t bn phớm.
Tờn tp tin: D:\Thi HSG<SBD>\Bai4.pas
D:\Thi HSG<SBD>\Bai4.doc
-------Hờt-----H v tờn thớ sinh: ...................................................... SBD.........................


* Lưu ý: Cán bộ coi thi không phải giải thích gì thêm.
HƯỚNG DẪN CHẤM THI - CHỌN HỌC SINH GIỎI LỚP 9
CẤP HUYỆN NĂM HỌC 2014 – 2015

Môn: Tin học
Hướng dẫn chấm trên máy tính.
Chấm theo bộ Test thử, đúng test nào giám khảo cho điểm test đó.
Bài 1. (4,0 điểm)
Test
Nhập số n
Kết quả (In ra màn hình)
Điểm
1
1
0.50000
0,5 đ
2
2
1.16667
0,5 đ

3
50
46.48119
1,0 đ
4
100
95.80272
1,0 đ
5
1000
993.51353
1,0 đ
Lưu ý: Đây là kết quả đã làm tròn đến 5 chữ số thập phân.
Bài 2. (4,0 điểm)
Test
Nhập số n
Kết quả (In ra màn hình)
Điểm
1
2
Không là số hoàn chỉnh
1,0 đ
2
6
Số hoàn chỉnh
1,0 đ
3
496
Số hoàn chỉnh
1,0 đ

4
8128
Số hoàn chỉnh
1,0 đ
Bài 3. (7,0 điểm)
Kết quả (In ra màn hình)
Test Nhập số a Nhập số b
Điểm
Số đối
Số đối
Tổng của hai
xứng số a xứng số b số đối xứng a,b
1
12
23
21
32
53
1,5 đ
2
123
456
321
654
975
1,5 đ
3
1357
2468
7531

8642
16173
2,0 đ
4
2809
2014
9082
4102
13184
2,0 đ
Bài 4. (5,0 điểm)
Test
Nhập số n
Kết quả (In ra màn hình)
Điểm
1
1
2
1,0 đ
2
3
2; 3; 5
1,0 đ
3
10
2; 3; 5; 7; 11; 13; 17; 19; 23; 29
1,5 đ
4
50
2; 3; 5; 7; ...; 227; 229

1,5 đ
Hướng dẫn chấm trên giấy.
Bài
1
Program Bai1;
(4,0đ) Uses Crt;

Var

Chương trình

Điểm
1,0 đ


n, i: Integer;
s: Real;
BEGIN
Clrscr;
Write(‘ Nhap so tu nhien n= '); Readln(n);
s:= 0;
For i:= 1 to n do s:= s + i/ (i + 1);
Writeln(‘ Gia tri bieu thuc Sn la: ’,s:5:5);
Readln
END.
Program Bai2;
Uses Crt;
Var
n, i, s: Longint;
BEGIN

Clrscr;
Write(‘ Nhap so tu nhien n: '); Readln(n);
2
s:= 0;
(4,0đ)
For i:= 1 to n - 1 do
If n mod i = 0 then s:= s + i;
If s = n then writeln(n, ‘ : la so hoan chinh ’)
Else writeln(n, ‘ : khong la so hoan chinh ’)
Readln
END.
Program Bai3;
Uses crt;
Var a, b: Longint;
Function DX(a: integer):integer;
Var so: Integer;
Begin
so:= 0;
Repeat
so:= so*10+a mod 10;
a:= a div 10;
Until a = 0;
DX:= so;
3
end;
(7,0đ) BEGIN
Clrscr;
Write(' Nhap so a= '); readln(a);

0,5 đ

1,5 đ
1,0 đ

1,0 đ

0,5 đ

1,5 đ

1,0 đ

1,0 đ

2,0 đ

1,0 đ


Write(' Nhap so b= '); readln(b);
Writeln('So doi xung so ',a,' la: ',DX(a));
Writeln('So doi xung so ',b,' la: ',DX(b));
Writeln('Tong cua hai so doi xung la: ',DX(a)
+DX(b));
readln;
END.
Program Bai4;
Uses crt;
Var
a:Array[1..1000] of Integer;
i, n: Byte;

j, k: Integer;
kt:boolean;
BEGIN
clrscr;
Write(' Nhap kich thuoc N cua mang: '); Readln(n);
a[1]:= 2;
For i:= 2 to n do
Begin
4
j:= a[i-1];
(5,0đ)
Repeat
Inc(j);
kt:= True;
For k:= 2 to j div 2 do
If j mod k = 0 then kt:= False;
Until kt;
a[i]:= j;
End;
Writeln(' Mang N so nguyen to dau tien: ');
For i:=1 to n do Write(a[i]:4);
Readln;
END.
* Lưu ý: Học sinh có nhiều cách giải khác nhau, nếu đúng giám kháo cho
điểm tương ứng của phần đó.
Học sinh chỉ được 50% số điểm của bài chấm trên giấy.

2,0 đ

1,0 đ


2,0 đ

2,0 đ

1,0 đ


Câu 1: Viết chương trình giải hai bài toán cổ: 100 trâu 100 bó cỏ và vừa gà
vừa chó 36 con 100 chân?
Câu 2: a)Viết chương trình để nhập một số tự nhiên từ bàn phím và in ra
màn hình số đó có phải là số Py- tap-go hay không .
Số n là số Py- ta-go nếu n>=3 và
n2=(n-1)2+(n-2)2?
b) Viết chương trình nhập ba số tự nhiên a,b,c từ bàn phím và in ra màn hình
thông báo chúng có là bộ số Py- ta- go hay không?
Câu 3: Viết chương trình tìm ước chung lớn nhất và bội chung nhỏ nhất của
hai số nhập vào từ bàn phím?
Hướng dẫn giải
Câu 1:


var d,n,g:integer;
begin
for d:=1 to 20 do
for n:=1 to 33 do
for g:=1 to 98 do
if d*5+n*3+g=100 then
writeln('Trau dung:',d,' trau nam:',n,' trau gia:',g);
readln;

end.
----var i,j:integer;
begin
for i:=1 to 25 do
for j:=1 to 50 do
if (i*4+j*2=100) and (i+j=36) then
writeln(i,' con cho, ',j,' con ga.');
readln;
end.
Câu 2:
a)program pytago;
uses crt;
var n:integer;
begin
clrscr;
write(‘ nhap so n=’);readln(n);
if n<=2 then write(‘ so nhap vao khong hop le’)
else
if n*n=(n-2)*(n-2)+(n-1)*(n-1) then
write(n,’la so Py ta go’)
else write(n,’ khong phai la so Py ta go’);
readln;
end.
b)
program Bo_so_pitago;
uses crt;
var a,b,c:integer;
begin
clrscr;
write(‘Nhap so a=’);readln(a);

write(‘Nhap so b=’);readln(b);
write(‘Nhap so c=’);readln(c);
if (a*a=b*b+c*c) or(b*b=a*a+c*c) or*c*c=a*a+b*b) then
write(a,’’,b,’’,c,’la bo so Py-ta –go’)
else
write(a,’’,b,’’,c,’khong phai la bo so Py-ta –go’);


readln;
end.
Cõu 3:
var a,b,min,max,ucln:integer;
begin
write('moi nhap hai so can xac dinh: ');
readln(a,b);
max:=a;
min:=b;
if max mod min=0 then ucln:=min
else if min mod max=0 then ucln:=max
else
begin
repeat
if max>min then max:=max-min
else if maxuntil max=min;
ucln:=min;
end;
write('ucln ',ucln);
write('bcnn ',a*b/ucln:1:1);
readln;

end.

Sở Gd&Đt
Quảng bình
Đề thi chính thức
Số Báo Danh: ............

kỳ thi CHọN học sinh giỏi lớp 9 tHCS
năm học 2012- 2013
Môn thi: tin học
(Khóa thi ngày 27 tháng 3 năm 2013)

Thời gian làm bài: 150 phút (không kể thời gian giao đề)
( thi gm cú 02 trang)

RA
S dng ngụn ng lp trỡnh Turbo Pascal lp trỡnh gii cỏc bi toỏn sau:
Cõu 1: (3,0 im) Phn thng
PT.PAS
Trong cuc thi gii toỏn qua mng internet mi hc sinh u cú s im tớch ly riờng
ca mỡnh. S im tớch ly ca mi hc sinh l mt s nguyờn dng K (0 < K 2ì109). i tuyn
ca trng THCS Ti Nng cú N hc sinh tham gia d thi (2 N 100). Ti bui gp mt trc k
thi cp tnh, thy hiu trng quyt nh thng cho cỏc hc sinh trong i tuyn Q triu ng, bit
rng im tớch ly ca mi hc sinh u chia ht cho Q.
Yờu cu: Hóy tỡm s nguyờn dng Q ln nht.
D liu vo: Cho trong file vn bn PT.INP cú cu trỳc nh sau:
- Dũng 1: Ghi s nguyờn dng N l s lng hc sinh.


- Dòng 2: Ghi N số nguyên dương lần lượt là điểm tích lũy của N học sinh, các số được ghi cách

nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra file văn bản PT.OUT theo cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương Q tìm được.
Ví dụ:
PT.INP
PT.OUT
5
3
15 24 45 36 27
Thời gian thực hiện chương trình không quá 1 giây cho mỗi bộ dữ liệu vào.
Câu 2: (3,5 điểm) Mật khẩu
MK.PAS
Cu Tí thường xuyên tham gia thi lập trình trên mạng . Vì đạt được thành tích cao nên Tí
được gửi tặng một phần mềm diệt virus. Nhà sản xuất phần mềm cung cấp cho Tí một mã số là một
số nguyên dương N có không quá 255 chữ số. Để cài đặt được phần mềm, Tí phải nhập vào mật
khẩu của phần mềm. Mật khẩu là một số nguyên dương M được tạo ra bằng cách tính tổng giá trị
các chữ số của N.
Yêu cầu: Hãy tìm số nguyên dương M.
Dữ liệu vào: Cho trong file văn bản MK.INP có cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương N.
Dữ liệu ra: Ghi ra file văn bản MK.OUT theo cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương M tìm được.
Ví dụ:
MK.INP
MK.OUT
84915388247
59


Câu 3: (3,5 điểm) Tần suất

TS.PAS
Cho tập hợp S có N phần tử nguyên dương {s1, s2,…, sN}.
(1 ≤ N ≤ 32000; 0 < si ≤ 32000; 1 ≤ i ≤ N)
Yêu cầu: Hãy liệt kê các phần tử trong S có số lần xuất hiện lớn hơn một lần.
Dữ liệu vào: Cho trong file văn bản TS.INP có cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương N.
- Dòng 2: Ghi N số nguyên dương là giá trị các phần tử của tập hợp S, các số được ghi cách nhau ít
nhất một dấu cách.
Dữ liệu ra: Ghi ra file văn bản TS.OUT trên nhiều dòng, dòng thứ i ghi 2 số si di, hai số cách nhau một
dấu cách. Trong đó si là phần tử xuất hiện trong S lớn hơn một lần và di tương ứng là số lần si xuất hiện.
Ví dụ:
TS.INP
TS.OUT
7
3 2
2 5 5 3 5 3 9
5 3


==HẾT==

Së Gd&§t
Qu¶ng b×nh

kú thi CHäN häc sinh giái líp 9 THCS
n¨m häc 2012 - 2013
m«n: tin häc
híng dÉn chÊm

I- Phương pháp:

- Giám khảo tạo bộ dữ liệu vào, tính toán kết quả. Thực hiện chương trình của
học sinh và so sánh kết quả.
- Giám khảo có thể sử dụng chương trình gợi ý dưới đây để tính toán kết quả của dữ liệu vào.
- Chương trình học sinh đúng một bộ test, giám khảo cho 0.5 điểm. Như vậy, nếu một câu có 3
điểm thì giám khảo phải tạo 6 bộ test.
- Đối với câu 1: Giám khảo phải tạo được 01 bộ test có N = 100, 01 bộ test có các giá trị K >
65535 và 01 bộ test chấm được thời gian thực hiện chương trình của học sinh với N=100 và K >
65000×103.


- Đối với câu 2: Giám khảo phải tạo được 01 bộ test có K > 200.
- Đối với câu 3: Giám khảo phải tạo được 01 bộ test có N = 32000.

II- Chương trình gợi ý:
Câu 1: (3,0 điểm) Phần thưởng
Program Phan_thuong;
Const fi='PT.INP';
fo='PT.OUT';
Type mmc=Array[0..101] of Longint;
Var N:Longint;
A:mmc;
Function UCLN(x,y:Longint):Longint;
Var sodu:Word;
Begin
sodu:=x mod y;
While sodu<>0 do
Begin
x:=y;
y:=sodu;
sodu:=x mod y;

End;
UCLN:=y;
End;
Procedure Read_Data;
Var f:text;
i:Longint;
Begin
Assign(f,fi);
Reset(f);
Readln(f,N);
For i:=1 to N do
Read(f,A[i]);
Close(f);
End;
Function USC:Longint;
Var f:text;
i,mUSC:longint;
Begin
mUSC:=UCLN(A[1],A[2]);
for i:= 3 to N do
mUSC:=UCLN(mUSC,A[i]);
USC:=mUSC;
End;
Procedure Write_Data;
Var f:Text;
Begin
Assign(f,fo);
Rewrite(f);
Write(f,USC);
Close(f);

End;
BEGIN
Read_Data;
Write_Data;
End.

Câu 2: (3,5 điểm) Mật khẩu
Program Mat_khau;
Const fi='MK.INP';
fo='MK.OUT';
A:Array['0'..'9'] of Byte = (0,1,2,3,4,5,6,7,8,9);
Var N:byte;
St:String;
Procedure Read_Data;
Var f:text;
Begin
Assign(f,fi);
Reset(f);
Readln(f,St);
Close(f);
End;


Function Tong:Longint;
Var f:text;
i,T:Longint;
Begin
T:=0;
For i:=1 to Length(St) do
T:=T+A[St[i]];

Tong:=T;
End;
Procedure Write_Data;
Var f:Text;
Begin
Assign(f,fo);
Rewrite(f);
Write(f,Tong);
Close(f);
End;
BEGIN
Read_Data;
Write_Data;
End.

Câu 3: (3,5 điểm) Tần suất
{$R+}
const

fi='TS.INP';
fo='TS.INP';
type mmc=array[0..32000] of word;
var a:mmc;
f:text;
n,d:word;
i,x:word;
Time:Longint;Times:Longint absolute 0:$46C;
Begin
Time:=Times;
Fillchar(A,sizeof(A),0);

assign(f,fi);
reset(f);
readln(f,n);
For i:=1 to n do
Begin
read(f,x);
a[x]:=a[x]+1;
End;
close(f);
assign(f,fo);
rewrite(f);
For i:=0 to 32000 do
if a[i]>1 then writeln(f,i,' ',a[i]);
close(f);
Writeln((Times-Time)/18.2:0:0);
Readln;
End.


PHÒNG GD&ĐT
ĐỀ CHÍNH THỨC

ĐỀ THI CHỌN HSG LỚP 9 CẤP HUYỆN
NĂM HỌC 2013 - 2014
Môn: Tin học
Thời gian làm bài: 150 phút

Lưu ý: Đề thi có 02 trang
Bài 1. (3 đ). Bộ số Py – ta – go (Tên file Pytago.pas)
Một bộ ba số tự nhiên được gọi là bộ số Py-ta-go nếu thỏa mãn điều kiện: bình phương một

số bằng tổng bình phương hai số còn lại.
Ví dụ: Bộ số (3; 4, 5) là một bộ số Pytago vì: 52 = 32 + 42 .

(

6
Yêu cầu: Nhập vào từ bàn phím số nguyên dương X, 1 ≤ X ≤ 10

)

Kết quả: - In ra màn hình số 1 nếu có thể tách X thành tổng của ba số nguyên dương a, b, c
sao cho (a; b; c) là một bộ ba số Py-ta-go.
- In ra màn hình số 0 nếu không thể tách X thành tổng của ba số nguyên dương a,
b, c sao cho (a; b; c) là một bộ ba số Py-ta-go.
Ví dụ:
Nhập
Kết quả
Giải thích
30 = 5 + 12 + 13
X = 30
1
Mà 132 = 52 + 122
Bài 2. (3 đ). Nguyên liệu sản xuất (Tên file Promate.pas)
Một người dùng số tiền là U đô-la và V Euro để mua một loại nguyên liệu sản xuất. Có N
công ty nước ngoài bán nguyên liệu trên được đánh số từ 1 đến N. Công ty thứ i ( 1 ≤ i ≤ N )
có giá bán Ai đô la/1 kg nguyên liệu và Bi Euro/1 kg nguyên liệu. Tuy nhiên, tại mỗi công ty
chỉ bán nguyên liệu cho một khách hàng hoặc theo đô-la, hoặc theo Euro. Hãy giúp người
đó tìm cách chọn ra 2 công ty để mua hàng sao cho số lượng nguyên liệu sản xuất có thể
mua được là nhiều nhất.
Nhập vào: Từ bàn phím 3 số theo thứ tự: N U V ( 1 ≤ N ≤ 20;1 ≤ U ,V ≤ 1000 ) và N cặp


số nguyên Ai , Bi ( 1 ≤ Ai , Bi ≤ 1000 ) , mỗi cặp trên một dòng.
In ra : Số lượng nguyên liệu S(kg) người đó mua được với 2 chữ số thập phân.
Ví dụ:
Nhập
In ra
Giải thích
3 2 5
S = 1.92
N = 3, U = 2, V = 5
6 4
Người đó mua nguyên liệu của công ty
3 5
thứ 2 bằng đô-la và mua nguyên liệu
8 7
của công ty thứ nhất bằng Euro

S = 2 : 3 + 5 : 4 = 1.92

Bài 3 (2,5 đ). Số đơn điệu (Tên file: Wiggle.pas)
Các số nguyên dương: 3748, 58, 859, 32435465768 được gọi là các số đơn điệu do nếu
quan sát các chữ số của các số này, ta thấy chúng luân phiên tăng giảm hoặc giảm tăng.
Chẳng hạn:
3 < 7 > 4 < 8 và 3 > 2 < 4 > 3 < 5 > 4 < 6 > 5 < 7 > 6 < 8
Số chỉ có một chữ số là số đơn điệu chiều dài 1.
Nhiệm vụ:Viết chương trình xác định số chữ số đầu tiên lớn nhất tạo thành số đơn điệu của
một số cho trước.



×