khẩu đã đưa cho mỗi bạn một con số khác nhau và sau đó nói rằng: Mật khẩu để cài đặt phần mềm là số nguyên dương nhỏ nhất gồm không quá chín chữ số chia hết cho bất cứ số nào trong các s[r]
(1)PHÒNG GIÁO DỤC–ĐÀO TẠO
TRỰC NINH ĐỀ THI CHỌN HỌC SINH GIỎI NĂM HỌC 2009-2010Môn: TIN HỌC Lớp 9
¬
Thời gian làm bài: 120 phút (không kể thời gian giao đề)
LËp chơng trình giải toán sau: Bài (6,0 ®iÓm): D·y sè
Nhập vào dãy số nguyên, số nằm dòng gặp số dừng lại (số khơng đợc tính vào dãy) Yêu cầu in hình:
- Số lợng số thoả mÃn dÃy - Số lợng số nguyên dơng
- Số lợng số số nguyên tố - Số lợng sè chia hÕt cho 3
VÝ dơ minh ho¹ hình thực chơng trình: Nhap mot day so nguyen vao:
2 3 11 12 6 9 17 -8 2009 0
So cac so thoa man la:9 So cac so nguyen duong la:8 So cac so nguyen to la:4
So cac so chia het cho la:4 Bài (7,0 điểm): Trả tiền
Anh Nam chợ mua mặt hàng có giá trị N đồng Trong túi anh Nam có nhiều tờ tiền với mệnh giá 50 đồng, 100 đồng 200 đồng Anh Nam có nhiều cách trả tiền để mua mặt hàng (anh Nam dùng tờ tiền mà anh có sẵn Anh khơng đa thừa tiền cho ngời bán ngời bán khơng có tiền tr li).
Yêu cầu: Cho biết số tiền N (N nguyên 10<=N<=30000); đa tất các cách tr¶ tiỊn cđa anh Nam tháa m·n
Input: Vào từ file văn TRATIEN.INP chứa số tự nhiên N (10<= N<=30000)
Output: Ghi file văn TRATIEN.OUT có nhiều cách in mỗi cách dịng, khơng có cách in số -1
VÝ dơ minh hoạ hình thực chơng trình:
TRATIEN.INP TRATIEN.OUT
200 0 x 50 + x 100 + x 200
0 x 50 + x 100 + x 200 2 x 50 + x 100 + x 200 4 x 50 + x 100 + x 200 Bài ( 7,0 điểm) Mật
Một nhóm gồm k học sinh góp tiền mua phần mềm dùng chung Khi cài đặt phần mềm này, người sử dụng cần phải nhập vào mật Khi biết các khách hàng học sinh say mê tin học, chủ cửa hàng thay đưa mật
(2)khẩu đưa cho bạn số khác sau nói rằng: Mật để cài đặt phần mềm số nguyên dương nhỏ gồm khơng q chín chữ số chia hết cho số số đưa cho bạn
Yêu cầu: Biết tất số mà chủ cửa hàng đưa cho học sinh, hãy tìm mật để cài đặt phần mềm.
Input: Vào từ file văn MATKHAU.INP Dòng chứa số học sinh k (k <20) Dòng thứ hai chứa k số nguyên dương nhỏ 20 mà ông chủ cửa hàng đưa cho học sinh, hai số liên tiếp cách dấu cách
Output: Ghi file văn MATKHAU.OUT mật tìm được. Ví dụ input output:
MATKHAU.INP MATKHAU.OUT
3
4 3 12
Chú ý: Bài đặt tên DAYSO.PAS Bài đặt tên TRATIEN.PAS Bài đặt tên MATKHAU.PAS
(3)-HƯỚNG DẪN CHẤM Bài 1: 6,0 điểm
Văn chơng trình
- Mỗi Text cho (chạy chơng trình điểm) 2,0 đ
- Đa khuôn dạng không ỳng yờu cu tr 0,5
- Thuật toán không tèi u trõ 0,5®
uses crt;
var N,dem,demd,dem3,snt,i:longint; Nt:boolean;
g:text; begin
clrscr;
writeln('Nhap mot day so nguyen vao:'); dem:=0;demd:=0;dem3:=0;snt:=0;
repeat
readln(N);inc(dem); if N>0 then inc(demd); if N>1 then
begin Nt:=true;
for i:=2 to trunc(sqrt(N)) if N mod i=0 then NT:=False; if NT then inc(snt);
end;
if N mod 3=0 then inc(dem3); until N=0;
writeln('So cac so thoa man la:',dem-1); writeln('So cac so nguyen duong la:',demd); writeln('So cac so nguyen to la:',snt);
writeln('So cac so chia het cho la:',dem3-1); readln;
end
Bài 2: 7,0 điểm
- Mi Text cho 1,0 đ
- Đa khuôn dạng không yêu cầu trừ 0,5đ
- NÕu dùng vòng for trừ 0,5đ
Văn chơng trình Var N,a,b:Integer; f,g:text; kt:boolean; Begin
assign(f,'tratien.inp');reset(f); assign(g,'tratien.out');rewrite(g); read(f,N);
kt:=true;
If N mod 50=0 Then
For a:=0 to N div 50
For b:=0 to (N-50*a) div 100 If (N-50*a-100*b) mod 200 = then begin
Writeln(g,a,' x 50 + ',b,' x 100 + ',(N-50*a-100*b) div 200,' x 200'); kt:=false;
end;
(4)TRATIEN.INP TRATIEN.OUT
200 x 50 + x 100 + x 200
0 x 50 + x 100 + x 200 x 50 + x 100 + x 200 x 50 + x 100 + x 200
500 x 50 + x 100 + x 200
0 x 50 + x 100 + x 200 x 50 + x 100 + x 200 x 50 + x 100 + x 200 x 50 + x 100 + x 200 x 50 + x 100 + x 200 x 50 + x 100 + x 200 x 50 + x 100 + x 200 x 50 + x 100 + x 200 x 50 + x 100 + x 200 x 50 + x 100 + x 200 10 x 50 + x 100 + x 200
1120 -1
1000 In 36 cach
10000 In 2601 cach
20000 In 10201 cach
30000 In 22801 cach
Bµi 3: 7,0 ®iĨm
- Mỗi Text cho 1,0 đ
- Thuật toán không tối u trừ 0,5đ
Văn chơng trình var f,g:text;
b,a:array[1 19] of Byte; T,kq,du:longint;
N,i:Byte; begin
assign(f,'matkhau.inp');reset(f); assign(g,'matkhau.out');rewrite(g); readln(f,N);
for i:=1 to N read(f,a[i]): kq:=a[1];
for i:=2 to N begin
T:=kq*a[i]; du:=kq mod a[i]; while du<>0 begin
kq:=a[i]; a[i]:=du;
du:=kq mod a[i]; end;
kq:=T div a[i]; end;
writeln(g,kq); close(f);close(g); end
MATKHAU.INP MATKHAU.OUT
3
(5)MATKHAU.INP MATKHAU.OUT 15 16 17 18 19
5
9 10 11 12 13
25740 10
1 10
2520 10
10 11 12 13 14 15 16 17 18 19
232792560 15
1 10 11 12 13 14 15
360360 19
1 10 11 12 13 14 15 16 17 18 19